ошибка mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement

выскакивает ошибка

Number of variables doesn't match number of parameters in prepared statement

вот код


    // создание строки запроса
$query =("INSERT INTO test1 (score, field1) VALUES(NOT NULL,?)");
// подготавливаем запрос
$stmt = $link->prepare($query); 
// привязываем к нему переменные
$stmt->bind_param("ss", $_POST['licscore'], $_POST['field_0']); 
//выполняем запрос
$stmt->execute();

Ответы (1 шт):

Автор решения: Quazimorda

В строке:

$query =("INSERT INTO test1 (score, field1) VALUES(NOT NULL,?)");

вы пытаетесь в таблицу test1 вставить строку со значениями для полей (столбцов таблицы) score и field1. То есть пытаетесь заполнить два поля. В куске VALUES(NOT NULL,?) вы как раз передаёте эти два значения. Первое: not null - то есть, значение должно быть не пустым. Второй параметр и значение будет подставлен позже из переменной вместо вопросительного знака.

Вот только в момент подстановки в строке:

$stmt->bind_param("ss", $_POST['licscore'], $_POST['field_0']);

вы почему-то передаёте уже не два, а три значения: строчку "ss", и значения двух переменных: $_POST['licscore'] и $_POST['field_0'].

То есть запрашивали два, а передаёте ТРИ значения. Ну и важно всё-таки прислушаться к тому, что вам писали выше в комментариях.

P. S. В тексте ошибки "stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement" вам как раз об этом сказано. Не знаете английского, хотя бы переведите в яндексе или гугле текст ошибки.

Upd: Самое главное: в команде на вставку данных в таблицу, в той части команды, где передаются значения: VALUES(NOT NULL,?) not null использовать некорректно. Нельзя. Читайте документацию, ссылки на которую вам дали выше в комментариях.

→ Ссылка