Этот вопрос закрыт для ответов, так как повторяет вопрос Почему не получается записать в базу данных?
@x_blazer

В чем моя ошибка в запросе?

Всем привет.

Подскажите, почему возникает ошибка при insert?
$result = $conn->query("INSERT INTO viber_messages ('datetimemsg', 'id_viber', 'message') VALUES ('?s', '?s', '?s')", $datetimemsg, $sender_id, $message); // Warning: mysqli::query() expects at most 2 parameters, 4 given

3 параметра и 3 переданы ведь?

Но если его запускать так то все ок: (но как я понимаю так делать не правильно)
$result = $conn->query("INSERT INTO viber_messages ('datetimemsg', 'id_viber', 'message') VALUES ('$datetimemsg', '$sender_id', '$message')); // TRUE
  • Вопрос задан
  • 130 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Ошибка потому, что ваш вызов $conn->query(...) транслируется в mysqli::query($conn, ...), а эта функция ждёт ровно два параметра. Первый - соединение, второй - текст запроса.
Для использования подготовленного запроса, его необходимо сначала подготовить (prepare), затем связать плейсхолдеры с переменными (bind_param) и только после этого выполнить (execute).
Ну и апострофы у вас неправильные, имена баз данных, таблиц, и полей берутся в обратные апострофы (`).
Ответ написан
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Пожалуйста ознакомьтесь с документацией модуля mysqli Prepared statements
$stmt = $mysqli->prepare('INSERT INTO viber_messages (`datetimemsg`, `id_viber`, `message`) VALUES (?, ?, ?);');
$stmt->bind_param('sss', $datetimemsg, $sender_id, $message);

$stmt->execute();


Share PHP code
Ответ написан
Ответы на вопрос 1
@KirillKenigsberg
Вообще 2 вариант нормальный вроде.Попробуйте вывести ошибку тогда и посмотрим
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы