переход на php pdo, считая строки - PullRequest
1 голос
/ 31 марта 2012

В настоящее время я выполняю обновление всех SQL-запросов на pdo, где я буду использовать операторы prepare для предотвращения атак с использованием SQL-инъекций.Пока все хорошо, я застрял в подсчете строк с помощью pdo.Я попробовал следующее:

 $sqlQuery = "SELECT COUNT(*) FROM News";
 $STIH = $DBH->query($sqlQuery);
 $rows_affected = $STIH->rowCount();
 echo($rows_affected); // returning result is 1, it should be 1038 

Однако, когда я использую старый код, подобный этому

$query = "SELECT COUNT(*) AS numrows FROM News";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];
echo ($numrows); // it return result which I expected which is 1038 rows.

Чего мне здесь не хватает.Спасибо

Ответы [ 4 ]

2 голосов
/ 31 марта 2012

Ты запутался.Чтобы получить 1038, вам нужен результат строки.В настоящее время вы получаете количество строк, которое возвращает SELECT COUNT, которое составляет 1 строку с 1 значением в ней.

1 голос
/ 31 марта 2012

Используйте $sth->fetchColumn(), чтобы получить данные.

$sqlQuery = "SELECT COUNT(*) FROM News";
$STIH = $DBH->query($sqlQuery);
$rows_affected = $STIH->fetchColumn();
echo ($rows_affected);
1 голос
/ 31 марта 2012

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

0 голосов
/ 31 марта 2012

Запрос возвращает скаляр, поскольку вы используете COUNT().Поскольку это скаляр, он имеет только одну строку, следовательно, он возвращает 1. Если вы хотите количество строк, просто используйте результат запроса.

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