как запланировать событие в MySQL подготовленном заявлении

0

Я пытаюсь создать событие, используя mysqli подготовленный оператор, но код не работает. Я узнал, что, когда я помещаю оператор mysqli внутри подготовленного оператора в какое-то предложение, такое как ON, WHERE, SET, AND, UPDATE, все становятся красными в цвет Я пытался понять это, но еще нет, и код не работает, мне нужен кто-то, чтобы исправить мой код.

$d_sql = $connect->prepare("CREATE EVENT stop_fad_1 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE ON COMPLETION PRESERVE DO UPDATE fad SET active_status=? WHERE fad_id=? AND sender=? AND reciever=?");
             $d_sql->bind_param("iiii",$complete_status,$fad_id,$sender,$reciever);
             $d_sql->execute();

то я получаю ошибку, как это, но я проверил мои данные, которые я представил в утверждение, что все они правильные

Fatal error: Call to a member function bind_param() on boolean in C:\xampp\htdocs\Alertmedia\fad\php\comfirm_gp_fad.php on line 35
Теги:
prepared-statement
mysql-event

1 ответ

0

CREATE VIEW не поддерживается в подготовленном заявлении.

https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html перечисляет операторы SQL, которые могут использоваться в подготовленных операциях.

Вам нужно будет интерполировать переменные в оператор CREATE EVENT перед его анализом. Это означает, что вы должны быть осторожны, чтобы переменные включали только ожидаемый формат (например, целое число).

$complete = (int) $complete;
fad_id = (int) $fad_id;
$sender = (int) $sender;
$reciever = (int) $reciever;

$d_sql = $connect->query("
  CREATE EVENT stop_fad_1 ON SCHEDULE 
    AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE 
    ON COMPLETION PRESERVE 
  DO 
    UPDATE fad SET active_status=$complete_status 
    WHERE fad_id=$fad_id AND sender=$sender AND reciever=$reciever
  ");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню