Подготовка запроса с использованием mysql prepare
Я готовлю запрос с использованием mysqli prepare, но это дает проверку на ошибки в руководстве, соответствующем версии вашего сервера MySQL, для правильного использования синтаксиса. near '? ) AND ( user_fullname ? )'
$query="DELETE FROM table WHERE ( quiz_answer ? ) AND ( user_fullname ? )";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('ss',array('IS NULL','IS NULL'));
$stmt->execute();
Пожалуйста, помогите мне найти проблему в запросе Спасибо заранее
1 ответ
Если мы предположим, что $answer и $fullname являются вашими параметрами quiz_answer и user_fullname. Это может сработать:
$answerString = 'IS NULL';
$userString = 'IS NULL';
if ( trim( $answer ) && $answer != 'null' ) $answerString = '= ?';
if ( trim( $user ) && $user != 'null') $userString = '= ?';
$query="DELETE FROM table WHERE ( quiz_answer $answerString ) AND ( user_fullname $userString )";
$stmt = $mysqli->prepare($query);
if ( $answer && ! $fullname ) $stmt->bind_param('s',array($answer));
if ( $answer && $fullname ) $stmt->bind_param('ss',array($answer, $fullname));
if ( ! $answer && $fullname ) $stmt->bind_param('s',array($fullname));
$stmt->execute();
Но я также предлагаю выполнить дополнительную проверку параметров перед вставкой их в SQL-запрос, даже с помощью привязки параметров.