Mysqli bind param - количество переменных не соответствует количеству параметров

Я не могу понять, почему я получаю ошибку: "Количество переменных не соответствует количеству параметров в подготовленном утверждении".

Мой код выглядит так:

$DB['con'] = new mysqli($$DB['host'],$DB['user'],$DB['pass'],$DB['base']);

$stmt=$DB['con']->prepare("insert into points(iduser,puncte,nume,email,telefon,ultimulpost)values('?',?,'?','?','?',(SELECT CURDATE()))");
$stmt->bind_param('sisss',$idm,$mynumber,$nume,$email,$tel);
$stmt->execute();

1 ответ

Проблема в этой строке:

$stmt=$DB['con']->prepare("insert into points(iduser,puncte,nume,email,telefon,ultimulpost)values('?',?,'?','?','?',(SELECT CURDATE()))");

Ваша ошибка в том, что вы ставите кавычки вокруг ? заполнители. Это означает, что они интерпретируются как буквальная строка ?, а не как заполнитель, который нуждается в заполнении. Таким образом, у вас есть только один заполнитель, поэтому, когда вы отправляете пять, он говорит, что у вас неправильный номер.

Цитаты не нужны. Весь смысл 'sisss' это сказать "эти значения являются строками", поэтому вам не нужно использовать кавычки, чтобы сказать то же самое.

Следующее должно работать:

$stmt=$DB['con']->prepare("insert into points(iduser,puncte,nume,email,telefon,ultimulpost)values(?,?,?,?,?,(SELECT CURDATE()))");
Другие вопросы по тегам