0

クエリによって返される行数をカウントしようとしていますが、次のようにしています。

$what = 'Norman';
$stmt = $conn->prepare('select names as names from names where names = :what');
$stmt->bindParam('what', $what);
$stmt->execute();
$rows = $stmt->fetchColumn();

echo 'Rows found '.$rows;

$stmt->setFetchMode(PDO::FETCH_ASSOC);

while($row = $stmt->fetch())
{  
    echo $row['names'] . "<br>";
}

しかし、私はまったく何も得ません。ただ空白。これを行う正しい方法は何ですか?

4

2 に答える 2

6

ここで不適切な関数を使用しているようです。

$what = 'Norman';
$stmt = $conn->prepare('select names from names where names = ?');
$stmt->execute(array($what));
$rows = $stmt->fetchAll(); // it will actually return all the rows

echo 'Rows found '.count($rows);

foreach ($rows as $row)
{  
    echo $row['names'] . "<br>";
}

または、2次元の代わりに1次元配列を取得することで、さらにきれいにすることができます

$rows = $stmt->fetchAll(PDO::FETCH_COLUMN, 0); 

echo 'Rows found '.count($rows);

foreach ($rows as $name)
{  
    echo $name . "<br>";
}

ただし、最初に PDO エラーを確認する必要があります

于 2013-04-26T09:48:13.483 に答える
1

返された行数を取得したい場合は、使用しますrowCount

// ...
$rows = $stmt->rowCount();

echo 'Rows found '.$rows;
// ...
于 2013-04-26T09:43:04.617 に答える