Подготовленные заявления Mysql не работает - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь использовать подготовленные операторы для выбора данных из таблицы следующим образом. Этот метод не работает.

    $sql = "SELECT * FROM `usrs` WHERE `username` = ? ";
    $statement = $this->conn->prepare($sql);
    if (!statement)
    {
        throw new Exception($statement->error);
    }
    $statement->bind_param("s",$username);
    $returnValue = $statement->execute();
    return $returnValue;

$sql должно быть в следующем формате.

$sql = "SELECT * FROM `usrs` WHERE `username` = 'username' ";

однако приведенный выше код не помещает одинарные кавычки вокруг имени пользователя

Мне нужно поместить имя пользователя между двумя одинарными кавычками, как показано. если я использую только

$sql = "SELECT * FROM `usrs` WHERE `username` = username "

это не работает.

любые предложения, как это сделать.

1 Ответ

0 голосов
/ 17 мая 2018

Читайте это внимательно:

bool mysqli_stmt :: execute (void)

это означает, что он возвращает логическое значение - это не пригодный для использования объект или массив.

Вы должны получить заявление.

Вот исправление:

$sql = "SELECT * FROM `usrs` WHERE `username` = ? LIMIT 1";
$statement = $this->conn->prepare($sql);
$statement->bind_param("s",$username);
if ($statement->execute()) {
  $result = $statement->get_result();
  return $result->fetch_assoc();
}
return null;

P.S. Спасибо @Phil за исправление моих ошибок в моем ответе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...