Почему не удаётся вызвать row_count в PDO?

Здравствуйте! Подскажите пожалуйста - почему не работает такой код:
$checkuser = $this->connect->prepare("SELECT 'unid' FROM `user` WHERE 'login' = :login");
     $checkuser->execute([":login"=>$login]);
     $checkphone = $this->connect->prepare("SELECT 'unid' FROM `user` WHERE 'phone' = :phone");
     $checkphone->execute([":phone"=>$phone]);
     $checkemail = $this->connect->prepare("SELECT 'unid' FROM `user` WHERE 'email' = :email");
     $checkemail->execute([":email"=>$email]);
     echo PHP_EOL."All good before checkers.".PHP_EOL;
 if ($checkuser->rowCount()!==0 OR $checkphone->rowCount()!==0 OR $checkemail!==0) {}

В конструкторе $this->connect определён так:
$this->connect = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass , [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);


Ошибка: PHP Notice: Undefined property: PDOStatement::$rowCount
Т.е. почему-то я не могу получить доступ к методу rowCount у PDO.
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 2
Akdmeh
@Akdmeh
PHP, Yii2, Music
php.net/manual/ru/pdostatement.rowcount.php
Потому что rowCount возвращает количество задействованных строк в INSERT, DELETE, UPDATE запросах, а не в SELECT.
Для SELECT гуглите sql_calc_found_rows, но там приходится все равно, по сути, делать два запроса.
Ответ написан
Комментировать
toxa82
@toxa82
Судя по ошибке вы вызывали свойство $checkuser->rowCount вместо метода $checkuser->rowCount(). А также имена полей и таблиц нужно брать в обратные кавычки `, а не ' или ", иначе это интерпретируется как строки, а не как имена полей/таблиц. Например:
$sql = 'SELECT `unid` FROM `user` WHERE `login` = :login OR `phone` = :phone OR `email` = :email';
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы