@kr_ilya

PDO выборка из базы и подсчет результатов?

Недавно начал изучать pdo. Необходимо сделать выборку из бд и определить имеется ли поле с указанными данными. Запрос:
$f_sql = 'SELECT COUNT(*) FROM db_users_a WHERE user = ?';
						$f_arr = array($login);
						$frow = $db->FetchRow($f_sql, $f_arr);
						if ($frow == 0) {
//если юзера с таким логином нет, то регаем

Функция:
public function FetchRow($f_sql, $f_arr){
	(36)	$f_row = $this->pdo->prepare($f_sql);
	(37)	$f_row->execute($f_arr);
	(38) 	$res = $this->pdo->query($f_row);	 	
	(39)  return ($res->fetchColumn() > 1) ? $res :  $res[0];
	}

Ошибка:
Warning:  PDO::query() expects parameter 1 to be string, object given in E:\OSPanel\domains\test.ru\classes\_new.db.php on line 38

Fatal error:  Uncaught Error: Call to a member function fetchColumn() on boolean in E:\OSPanel\domains\test.ru\classes\_new.db.php:39
Stack trace:
#0 E:\OSPanel\domains\test.ru\api\ajax.php(30): db->FetchRow('SELECT COUNT(*)...', Array)
#1 {main}
  thrown in E:\OSPanel\domains\test.ru\classes\_new.db.php on line 39

Спасибо!
  • Вопрос задан
  • 489 просмотров
Решения вопроса 1
BBoyJuss
@BBoyJuss
WordPress, интерфейсы и все вытекающие
Главная ошибка начинающих, это паника во время ошибки.
Вчитывайтесь в лог ошибки, он вам помогает.
PDO::query() expects parameter 1 to be string, object given
db->FetchRow('SELECT COUNT(*)...', Array)

$f_arr = array($login); в $login что прилетает, какого типа? (var_dump($login))

Вот хорошая статья для изучения Как работать с PDO? Полное руководство.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@kr_ilya Автор вопроса
Разобрался, рабочий вариант:
public function FetchRow($f_sql, $f_arr){
		$f_row = $this->pdo->prepare($f_sql);
		$f_row->execute($f_arr);	 	
	 	return $res = $f_row->fetchColumn();
	}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы