は今、私はmysqliのクエリに複数のパラメータを結合に対処するために、次の構造を使用するように過ごしています:バインド複数のパラメータ
if ($words_total == 1)
{
$statement -> bind_param("s", $words[0]);
}
else if ($words_total == 2)
{
$statement -> bind_param("ss", $words[0], $words[1]);
}
else if ($words_total == 3)
{
$statement -> bind_param("sss", $words[0], $words[1], $words[2]);
}
//and so on....
私は以下のコードを使用して、疑問符の数を仕事とそれを私のクエリに挿入してください:
私の質問には、私が動的に必要とするだけ多くの入力を処理する方法が必要です。 bind_param()のハードコーディングは、これを処理する実際に悪い方法のようです。
<?php
$values = array('b','c','d');
$in = str_repeat("?,", count($values));
$in = trim($in, ",");
$sql = "SELECT * from users where username in($in)";
$stm = $con->prepare($sql);
$types = str_repeat("s", count($values));
if (strnatcmp(phpversion(),'5.3') >= 0)
{
$bind = array();
foreach($values as $key => $val)
{
$bind[$key] = &$values[$key];
}
} else {
$bind = $values;
}
array_unshift($bind, $types);
call_user_func_array(array($stm, 'bind_param'), $bind);
#var_dump($sql, $types, $bind, $con->error);
$stm->execute();
$res = $stm->get_result();
while($row = $res->fetch_assoc()) var_dump($row);
ラインのみ開発テスト用ですコメント:私はここではPHPのバージョン5.4.10
ありがとうございました。私は文字通り、この問題の醜い解決策を絶望していました。エラー報告が私の弱点であり、私が時間をかけてより多くのことを学ぶ必要があることに同意します。私は2ヶ月前のようにphpを学んだだけで、今までは可能な限り多くできるようになってきました。今私は多分、できるだけ多くのことに集中する必要があると思う!ハグと感謝! –