3 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
這個(gè)答案已經(jīng)過時(shí)了。請?jiān)谳^新的PHP版本(如Stacky回答)中使用傳播運(yùn)算符。
從php docu:
將mysqli_stmt_bind_param()與call_user_func_array()結(jié)合使用時(shí)必須小心。注意,mysqli_stmt_bind_param()要求參數(shù)通過引用傳遞,而call_user_func_array()可以接受可以表示引用或值的變量列表作為參數(shù)。
在mysqli-stmt.bind-param頁面上,您有不同的解決方案:
例如:
call_user_func_array(array($stmt, 'bind_param'), refValues($params));
function refValues($arr){
if (strnatcmp(phpversion(),'5.3') >= 0) //Reference is required for PHP 5.3+
{
$refs = array();
foreach($arr as $key => $value)
$refs[$key] = &$arr[$key];
return $refs;
}
return $arr;
}

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
在PHP 5.6中引入的,您可以使用...運(yùn)算符(“擴(kuò)展運(yùn)算符”)以較少的麻煩來實(shí)現(xiàn)相同的結(jié)果:
//object-oriented
$sql_stmt->bind_param($param_type, ...$params);
//procedural
mysqli_stmt_bind_param($sql_stmt, $param_type, ...$params);

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
Dunno為什么在代碼中使用單詞“ PDO”,但這是其中唯一正確的單詞。使用PDO,面對mysqli準(zhǔn)備好的語句不會(huì)遇到問題:
$query = "INSERT INTO test (id,row1,row2,row3) VALUES (?,?,?,?)";
$params = array(1,"2","3","4");
$stmt = $pdo->prepare($query);
$stmt->execute($params);
只需看一下這段簡潔的代碼,然后將其與mysqli準(zhǔn)備好的語句與所需的代碼進(jìn)行比較即可。
添加回答
舉報(bào)