Как запланировать событие в MySQL подготовленное заявление
Я пытаюсь создать событие, используя подготовленный оператор 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
1 ответ
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
");