2
foreach
ループを使用して、array
にパラメータタイプとパラメータ値を挿入してからデータベースに挿入します。すべてうまく動作し、データベースに投稿しますが、私はそれが(参照として)array
に追加されたときに同じ値として両方の値を送信する理由を理解できません。私はunset();
を呼び出すことに疲れているが、それはトリックをしない。call_user_func_arrayのforeachループ集団配列
function insertUsers($db, $sql, $vals){
$stmt= $db->prepare($sql);
$types='';
$types= $types ?: str_repeat("s", count($vals));
$inputArray [] = &$types;
foreach($vals as $key=>$value){
$inputArray[]= &$value;
unset($key);
}
print_r($inputArray);
call_user_func_array(array($stmt, 'bind_param'), $inputArray);
$stmt->execute();
$stmt->close();
}
結果はビーイングを終了します。
Array
(
[0] => ss
[1] => tyuty (note this value changes to the last value)
[2] => tyuty
)
参照を使用して関数を呼び出す場所に結果を渡す場合は、すべての手順で「&」を使用する必要があります。私。 'insertUsers($ db、$ sql、&$ vals)'、 'foreach($ val = as&$ value)'となります。 – jh1711