これはおそらく絶対的な質問ではありません。私はPDOに慣れていないので、投稿されている他のソリューションを理解できません。 私がしようとしているのは、データベース内のfetchallによって返されたクエリの結果を表示することです。PDOからの結果を表示
データベースクラスのインスタンスを作成するインデックスページを設定し、 FetchAllを呼び出してレコードを返します。
$db = new database($pdo);
$sql = 'SELECT * FROM fruit';
$rows = $db->getData($sql);
$count = $db->getCount($sql);
echo $count;
print_r($rows);
foreach($rows as $fruit){
echo $fruit->'fruitName';
}
コードのすべての実行され、$行の配列は、データを取得した結果が取り込まれ、そしてカウントが正確である8の結果を持っていますが、私は出力できませんforeachのと結果!
データベースクラスは、参考のためにここにある:
class database
{
function __construct($pdo)
{
$this->pdo = $pdo;
}
function getData($sql)
{
$query = $this->pdo->prepare($sql);
$query->execute();
return $query->fetchAll();
}
function getCount($sql)
{
$query = $this->pdo->prepare($sql);
$query->execute();
return $query->rowCount();
}
}
これは何ですか: 'print_r($ rows);'出力? –
あなたの 'database'クラスは本当に純粋な' PDO'より価値のあるものを追加しません。実際には、 'database'クラスで書かれているので、同じクエリで行数とデータの両方を取得できないので、完全に不必要に2回クエリを実行しています。それを取り除き、 'PDO'を直接使用してください。 – deceze
'print_r'はこのような配列を与えていました([0] => Array([fruid] => 1 [0] => 1 [fruitName] => apple [1] => apple [color] => green [2] => green'。コードの非効率性を知ることができます。実際にはcountメソッドを追加して、正しいデータを取得しているかどうかを再確認することができました。 –