0

データベースは正常ですが、$ROW が NULL として認識されない理由がわかりません。

私はこのコードを持っています:

$pdo = new PDO("mysql:host=" . $this->hostname . ";dbname=" . $this->dbname, $this->username, $this->password);

foreach($pdo->query('SELECT * FROM people WHERE name="Joshua"') as $row):
    if($row['name'] != NULL):
        echo "WE HAVE ONE JOSHUA";
    else:
        echo "WE DO NOT HAVE ANY JOSHUA";
    endif;
endforeach;

このスクリプトを実行すると、「WE HAVE ONE JOSHUA」というメッセージが表示されました。

データベースに存在しない名前の PDO->QUERY で name="Joshua" を変更すると、「WE DO NOT HAVE ANY JOSHUA」というメッセージが表示されません。

これに対処するためのヒントはありますか?

FOREACH が NULL を返すか NOT を返すかを制御するステートメントを作成したいだけです。

事前に感謝し、英語が下手です。

4

3 に答える 3

2

PDO rowCountを使用して、結果がnullかどうかをテストできます。見る:

$cmd = $pdo->prepare('SELECT * FROM people WHERE name="Joshua"');
$cmd->execute();
if ($cmd->rowCount() > 0)
{
    while ($row = $cmd->fetch())
    {
        do...
    }
}

PDOはエラーを返しません。PDOStatement :: errorCode()を使用できます。

于 2013-02-05T16:07:23.173 に答える
0

複数の行を処理するためだけにループが必要
ですが、取得する行が 1 つだけの場合、ループは必要ありません。

$result = $pdo->query('SELECT * FROM people WHERE name="Joshua"');
$row = $result->fetch();
if ($row) {
   echo "WE HAVE ONE JOSHUA";
   // here you have Joshua's data in $row
} else {
    echo "WE DO NOT HAVE ANY JOSHUA";
}
于 2013-02-05T18:03:56.953 に答える
0

これはどう?

foreach($pdo->query('SELECT COUNT(*) totalCOunt FROM people WHERE name="Joshua"') as $row):
    if($row['totalCOunt'] != 0):
        echo "WE HAVE ONE JOSHUA";
    else:
        echo "WE DO NOT HAVE ANY JOSHUA";
    endif;
endforeach;
于 2013-02-05T15:55:38.703 に答える