亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

這個函數中的$i一直是個數字啊,switch并不起什么作用啊。

有沒有小伙伴幫忙看一下?

正在回答

3 回答

是的 ,這段代碼是有問題的 不僅替換語句的那個的地方有問題,switch的參數有問題,而且$args此時被array_shift移空了應該是空數組、那下面過濾的$args[$i]從何而來呢

可能老師只是想演示一下底層是怎么來綁定參數的原理吧,按這個原來改改代碼其實是可以的

2 回復 有任何疑惑可以回復我~
0 回復 有任何疑惑可以回復我~
$mysqli?=?new?Mysqli('127.0.0.1',?'root',?'root',?'tst');
$name?=?$_GET['name']????'';
$password?=?$_GET['password']????'';
function?bind_param($sql,?$format)
{
????$args?=?func_get_args();
????$prepare_sql?=?array_shift($args);
????$format?=?array_shift($args);

????if?(strlen($format)?>?count($args))?{
????????die('缺少參數');
????}
????$i?=?0;
????while?($i?<?strlen($format))?{
????????switch?($format[$i])?{
????????????case?'s':
????????????????$args[$i]?=?"'"?.?addslashes($args[$i])?.?"'";
????????????????break;
????????????case?'i':
????????????????$args[$i]?=?intval($args[$i]);
????????????????break;
????????????default:
????????????????break;
????????}
????????//這段代碼也有問題,str_replace?會替換所有的問號
????????$prepare_sql?=?preg_replace('/\?/',??$args[$i],?$prepare_sql,?1);
????????$i++;
????}
????return?$prepare_sql;
}

echo?'<pre>';
$sql?=?"select?name?from?user?where??name=??and?password=?";
echo?$sql;
echo?'<br>';
$after_prepare?=?bind_param($sql,?'ss',?$name,?$password);
echo?'after?prepare:'?.?$after_prepare;
echo?'<br>';
$res?=?$mysqli->query($after_prepare);
$result?=?$res->fetch_all();
if?($result)?{
????print('hi?');
????print_r($result);
}?else?{
????print('hack?failed');
}
echo?'</pre>';

注意?

需要 php7以上,或者自己改代碼


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

這個函數中的$i一直是個數字啊,switch并不起什么作用啊。

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號