Я использую подготовленные операторы для выполнения запроса SELECT в моей базе данных, однако характер синтаксиса SQL вызывает проблему с MySQLi.Как использовать цитаты в инструкции SQL с MySQLi Подготовленные утверждения в PHP?
Когда я пытаюсь подготовить:
SELECT user_id FROM Users WHERE email='?';
Я получаю сообщение об ошибке
Warning: mysqli_stmt_bind_param(): Number of variables doesn't match number of parameters in prepared statement
Я знаю, что ошибка была вызвана поставить кавычки вокруг? но проблема в том, что эти кавычки необходимы для правильного синтаксиса SQL. Если я удалю кавычки, подготовленный оператор работает, но база данных не возвращает то, что она должна.
Есть ли что-то, что я могу сделать, или это ограничение интерфейса? Если это ограничение, что я могу сделать для выполнения этого запроса с безопасностью подготовленных заявлений?
Полный код:
$email = $_POST["email"];
$sql = "SELECT user_id,fname,city,state,zip FROM Users WHERE email='?';";
$types = 's';
$stmt = $db_obj->prepare($sql);
if (!mysqli_stmt_bind_param($stmt, $types, $email)) {
echo "SQL Bind Parameter error.<br/>";
exit;
}
if (!mysqli_stmt_execute($stmt)) {
echo "SQL Statement Execute error.<br/>";
exit;
}
if (!isset($row[0]))
exit ("No such email registered.");
Я не совсем уверен, почему это было отклонено. Я сделал несколько обширных поисков и не могу понять. Если это плохой вопрос, может кто-нибудь указать мне в правильном направлении? – TheKarateKid
Я еще не проголосовал. Но проблема в вашем вопросе заключается в том, что вы не разместили свой код, просто поместили свою ошибку. –
Я думал, что предоставил достаточную информацию как есть, потому что строка, которую я предоставил, является причиной ошибки. Теперь я предоставлю полный код. – TheKarateKid