PDO, оператор MySQL SELECT, возвращающий логическое значение true? - PullRequest
1 голос
/ 04 августа 2011

Просто используя SELECT в моем операторе MySQL, пытаюсь получить столбец.

$last_visit = $db->prepare( 'SELECT `last_visit` FROM `visitors` WHERE `ip` = :ip' )
        ->execute( $arr_ip );
var_dump( $last_visit );

Вывод var_dump вместо bool(true) вместо необходимых мне данных.Попытка ->fetch() только выдает ошибку.

Что я могу сделать?Это задерживает весь мой проект, и я не могу понять, что случилось, независимо от того, куда я смотрю.Правильные данные в базе данных, соединение правильное и INSERT работает.

1 Ответ

3 голосов
/ 04 августа 2011

как сказано в документации , execute() возвращает логическое значение. взгляните на примеры для fetch () , чтобы узнать, как использовать PDO.

В вашем случае код должен выглядеть следующим образом:

$stmt = $db->prepare( 'SELECT `last_visit` FROM `visitors` WHERE `ip` = :ip' );
$stmt->bindParam(':ip', $arr_ip);
$stmt->execute();
if($row = $stmt->fetch()){
  $last_visit = $row['last_visit'];
}else{
  // whatever you like to do if there's no result...
}

EDIT:
дополнительная информация в ответ на ваш комментарий:

Для UPDATE или DELETE вы можете сделать однострочную, как ваш пример, потому что вам может не понадобиться результат (или просто true / false, чтобы увидеть, был ли запрос успешным) .

Для SELECT вам нужно fetch() результат. Вы можете опустить bindParam() и указать параметры для выполнения, как вы пытались, но без fetch() вы не получите свои результаты.

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