Мне нужно запустить запрос ниже. Он спрашивает у меня много неприятностей. На самом деле, у меня есть несколько условий «ГДЕ», которые требуют разложения массива.Mysqli подготовленный оператор: несколько предложений WHERE и WHERE IN (Array)
This issue помог мне, но у него нет нескольких условий «ГДЕ».
$array = (1,2,3,4,5,6,7,8,9,10);
$clause = implode(',', array_fill(0, count($array), '?'));
if($request = $this->getConnexion()->prepare('SELECT col1, col2 FROM table WHERE col1 IN ('.$clause.') AND col2>=?') or die(mysqli_error($this->getConnexion()))) {
// The problem starts here
call_user_func_array(array($request, 'bind_param'), $array);
$request->bind_param('i', $this->getTime());
// Until here
$request->execute();
$request->bind_result($col1, $col2);
$request->store_result();
// Following the code
}
Вы можете добавить свой '$ this-> GetTime()' до конца вашего массива, перед использованием 'call_user_func_array', или построить еще один' 'array_fill' с помощью i', а затем взрываются в' bind_param' – Sean
В чем проблема? Похоже, что вместо дополнительного вызова 'bind_param()' вы должны добавить еще один '' 'в массив' $ clause' и добавить значение '$ this-> getTime()' в '$ array 'array значений, поэтому вы просто имеете дело с одним массивом параметров, охватывающим как предложение IN(), так и другое условие. –
@Michael Berkowski, пожалуйста, напишите свой ответ, я не понимаю, о чем вы думаете :) – Zl3n