Подготовка запроса с использованием 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-запрос, даже с помощью привязки параметров.

Другие вопросы по тегам