Я новичок в PDO и не могу помещать результаты извлечения в массив.MYSQL/PHP: создать массив с использованием FetchAll с PDO
Следующий код преуспевает в запросе базы данных. Тем не менее, я хотел бы поместить результаты в массив, чтобы затем я мог работать с элементами массива индивидуально. Я не уверен, что именно $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 downvote вас BTW – Mihai
fetchAll возвратит полный resultset в переменную. Эта переменная представляет собой массив, один случай для каждой строки в наборе результатов. В зависимости от параметра, который вы используете в fetchAll, он будет массивом массивов строк или массивом объектов строки. – RiggsFolly
\ PDO :: FETCH_ASSOC и \ PDO :: FETCH_NUM позволяют вам определять режим выборки. \ PDO :: FETCH_ASSOC вернет только массив field => value, в то время как \ PDO :: FETCH_NUM возвращает массив с числовыми клавишами – bxN5