Возвращаемое количество из базы данных - PullRequest
1 голос
/ 15 апреля 2011

У меня есть следующий скрипт, который не работает, так как я ожидаю, что он будет работать:

$DBH = new PDO( "mysql:host=localhost;dbname=database_name", "user", "pass" );
$DBH -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$STH = $DBH -> prepare( "select count( users_id ) from table1 where username = :username" );

$STH -> bindParam( ':username', $_POST['username'], PDO::PARAM_STR, 100 );

$STH -> execute();

$strCount = $STH -> rowCount();

if( $strCount == 1 ) {
    echo $strCount;
    echo "user has already registered, do nothing";
} elseif ( $strCount == 0 ) {
    echo $strCount;
    echo "user has not registered, insert into db";
} else {
    echo $strCount;
    echo "something is wrong, should only ever be 0 or 1";
}

Всегда кажется, что я возвращаю 1 для $ strCount

В таблице 1 я просто1 строка, где имя пользователя username1.Если опубликованное значение - username1, то я ожидаю, что $ strCount будет равно 1, но по какой-то причине, если опубликованное значение равно username2, я все равно получаю $ strCount как 1.

Кто-нибудь знает, что я делаю неправильно

Ответы [ 3 ]

1 голос
/ 15 апреля 2011

вы делаете счет дважды!count () и rowcount ().PDOStatement :: rowCount () возвращает количество строк, затронутых последним оператором DELETE, INSERT или UPDATE, выполненным соответствующим объектом PDOStatement.

Попробуйте выполнить выборку regualr

$count = $db->query("select count(*) from table")->fetch(); 
1 голос
/ 15 апреля 2011

Вы делаете COUNT () в запросе, что означает, что вы получите только одну строку назад, с одним полем, содержащим количество записей.

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

0 голосов
/ 15 апреля 2011

count (blah) вернет одну строку со значением count.Вместо вызова rowCount (), я думаю, вам нужно вызвать fetch (..) после выполнения и чтения значения оттуда.Это основано на документации PHP.

http://www.php.net/manual/en/pdostatement.fetch.php

Я не разработчик PHP, поэтому я не хочу давать вам плохой код.

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