1

わかりました、これはパラメータを動的にバインドするための私のコードです。

$sql = "INSERT INTO `users` (`name`, `password`, `email`, `permission`) VALUES (?, ?, ?, ?)";
$sql_stmt =  $mysqli->prepare ($sql);

$test = array("ssss","1","2","3","4");

call_user_func_array(array($sql_stmt,'bind_param') ,$test);

$sql_stmt->execute();

「プリペアドステートメントのパラメータにデータが提供されていません」というエラーが表示されます。ただし、次の行は機能します。

call_user_func_array(array($sql_stmt,'bind_param') ,array("ssss","1","2","3","4"));

ここで何が起こっているのかわかりません。

編集 私はちょうどやってみました

echo $sql_stmt->param_count;

そして私は4の適切なカウントを取得します。

私がこれについて啓発されることができれば、それは大きな助けになるでしょう。

ありがとうございました。

4

1 に答える 1

1

bind_paramについては、PHPのページの2番目のメモを読んでください。call_user_func_array()参照によって渡されるパラメータが必要であると書かれています。したがって、これは機能するはずです。

$arr = array('ssss', '1', '2', '3', '4');
call_user_func_array( array($sql_stmt, 'bind_param'), &$arr );
于 2013-02-07T03:22:15.907 に答える