1

PHPアプリケーションでPDOを使用しました。しかし、私はfetch()機能に問題があります。の結果を数えると、結果fetch()セットに何かがあることがわかります。しかし、私がそれらを見せたいとき、それは何も見せることがありません。

try
{ 
    $sql = "SELECT id,salt FROM tbl_admin WHERE username = ? AND password = ? LIMIT 1";
    $q = $db->prepare($sql);
    $q->execute(array($username,$password));
    $rows = $q->columnCount();

    if ($rows > 0)
    {
        $r = $q->fetch(PDO::FETCH_BOTH);
        echo(count($r).'<br />'); // Prints 1
        print_r($r); // Nothing to print ...
        die();
    }
    else
    {
        die('error');
    }
}
catch(PDOException $e)
{
    echo $e->getMessage();
}

手伝ってくれませんか。

4

1 に答える 1

3

行数ではなく、列数を数えています。

$rows = $q->columnCount();

これは

$rows = $q->rowCount();


rowCountはいえ、UPDATE、INSERT、またはDELETEクエリ用です。だから、それはここでは問題ではありません。

$q->executeまず、 trueまたはfalseを返すかどうかも確認する必要があります。

$q->fetch次に、 trueまたはfalseを返すかどうかを確認する必要があります。

あなたのコードを考えると

$r = $q->fetch(PDO::FETCH_BOTH);
echo(count($r).'<br />'); // Prints 1

次のことを試してください。

echo(count(false));

これも1を出力することに気付くでしょう。

$q->fetchしたがって、解決策は、有効な行を返したと見なす前に、の戻り値を確認する必要があるということです。

于 2012-07-24T06:41:51.943 に答える