PDOが新しく、フェッチの結果を配列に配置する際に問題があります。MYSQL/PHP:PDOでFetchAllを使用して配列を作成
次のコードは、データベースのクエリに成功します。しかし、結果を配列に配置して、配列の要素を個別に処理できるようにしたいと考えています。私は正確に$result
が何であるかわからない。すでに配列ですか?それとも何ですか?私はfetchAll
を使用して配列を取得する必要があると思う。もしそうなら、これを行うための適切なコードをいただければ幸いです。または、$results
が既に配列の場合は、それと私がfetchAll
となるものの違いは何ですか?
//USE PDO TO CONNECT TO DBASE
$hostdb = "my host";
$namedb = "mydb";
$passdb = "bypass";
$userdb = "myusername";
try {
// Connect and create the PDO object
$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
// Define and perform the SQL SELECT query
$sql = "SELECT * FROM `comments` WHERE `userid` IN(118)";
$result = $conn->query($sql); // THIS WORKS
// $result = $sql->fetchAll(PDO::FETCH_OBJ); //THIS DOES NOT WORK
if($result !== false) {
// Parse the result set
foreach($result as $row) {
echo $row['id']. ' - '. $row['name']. ' - '. $row['category']. ' - '. $row['link']. '<br />';
}
}
$conn = null; // Disconnect
}
catch(PDOException $e) {
echo $e->getMessage();
}
これは、オブジェクトを返しますが、あなたがオブジェクトまたはarray.Forのいずれかを反復処理することができますが、実行して準備必要はfetchAll、RTFM.Didntはところで – Mihai
fetchAllのは完全に返されますあなたをdownvote結果を変数に変換します。その変数は配列であり、結果セットの各行に1つ存在します。 fetchAllで使用するパラメータに応じて、行配列の配列または行オブジェクトの配列 – RiggsFolly
\ PDO :: FETCH_ASSOCおよび\ PDO :: FETCH_NUMを使用すると、フェッチモードを定義できます。 \ PDO :: FETCH_ASSOCはフィールド=>値配列のみを返すのに対し、\ PDO :: FETCH_NUMは数字キーを配列に返す – bxN5