Несколько дней назад у меня была эта проблема с bind_param, и я нашел временное решение, но это нехорошо. Мне нужно динамически связывать переменные при регистрации пользователя, поэтому я использую это с запросом INSERT INTO. В начале я думал, что это может быть потому, что я должен был передать значение по ссылке, но поскольку я читал на php.net, поскольку php 5.3 вам больше не нужно передавать значение по ссылке. Так что я пытался, пытался и пытался, но не могу понять, где я ошибаюсь.bind_param не работает со значениями
// INSERT INTO
public function QueryInsert($table, $fields, $values, $format) {
$values = explode(',',$values); // Metto i VALUES di Insert in un array
$placeholders = ""; // Inizializzo Segnaposto
$data = "";
$i = 0;
foreach($values as $k => $v) { // Creo i placeholders in base al numero di Valori VALUES
$placeholders .= '?,';
}
$placeholders = substr($placeholders, 0, -1); // Tolgo l'ultima virgola
$DB = DBConn::ConnettiDB(); // Richiamo la funzione di connessione al DB
$statem = $DB->prepare("INSERT INTO $table($fields) VALUES ($placeholders)"); // Preparo query per inserimento
$statem->bind_param("$format",$values); // WORKING
$statem->execute(); // Eseguo query INSERT
// Controllo se la query INSERT ha avuto successo
if($statem->affected_rows != -1) {
return true;
}
echo "<br>ERRORE Insert: <br>" . $statem->error;
} // FINE INSERT
Я сделал эту работу, заменив этот
$statem->bind_param("$format",$values); // WORKING
с этим
$statem->bind_param("$format",$values[0],$values[1],$values[2]); // WORKING
начиная с $ значений массива производится с регистрационными полями, так, чтобы добавить пользователя я иметь имя пользователя , пароль и адрес электронной почты, 3 поля, таким образом, он работает. Проблема в том, что я не могу использовать этот скрипт для запуска динамических запросов, потому что он не работает с строкой, я сказал, с переменными значениями $, которые являются массивом, и я не понимаю, почему bind_param этого не принимает. Infact ошибки я получаю:
No data supplied for parameters in prepared statement
Потому что кажется, что bind_param не может работать с этими переменными $ значения
Я попытался с call_user_function_array тоже, но не сделать его работать. Может кто-нибудь сказать мне, где я терпеть неудачу? Может быть, это значение ценности ref? Потому что я не уверен, так как я читал, что теперь вам больше не нужно передавать значения по ссылке. И я тоже пытался это сделать, это не сработало, может быть, я не сделал правильного пути.
Согласно документации (http://php.net/manual/es/mysqli-stmt.bind-param.php), вы должны пройти каждое значение, а не массив из них. Вы можете использовать произвольное количество значений, используя 'call_user_func_array', проверьте этот вопрос: http://stackoverflow.com/questions/16236395/bind-param-with-array-of-parameters –
Возможный дубликат [Использовать одно связывание \ _param() с переменным числом входных варов] (http://stackoverflow.com/questions/793471/use-one-bind-param-with-variable-number-of-input-vars) – Gavriel
Завтра я буду выглядеть лучше с тех пор Я устал, но я уже пробовал с CUFA, и теперь я тоже это пробовал, и он никогда не работал. Я действительно не понимаю, в чем проблема, 100% - это ценности, но даже если я передам их как ссылку, это не работа ... это на самом деле сводит меня с ума. Спасибо за помощь – eartahhj