【发布时间】:2017-07-03 00:53:21
【问题描述】:
我是 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();
}
【问题讨论】:
-
它返回一个对象,但你可以遍历一个对象或一个数组。对于 fetchall 你需要准备执行,RTFM.Didnt downvote 你顺便说一句
-
fetchAll 会将完整的结果集返回到一个变量中。该变量是一个数组,结果集中的每一行出现一次。根据您在 fetchAll 中使用的参数,它将是一个行数组或行对象数组
-
\PDO::FETCH_ASSOC 和 \PDO::FETCH_NUM 允许您定义获取模式。 \PDO::FETCH_ASSOC 将只返回字段 => 值数组,而 \PDO::FETCH_NUM 返回带有数字键的数组
-
是的,我想我想获取所有。因为我想在循环外使用这个数组。我想对数组中的值进行一些数学运算,然后将它们存储到数组中的一个新变量中。但是,我要获取以上所有内容的一个班轮并没有运行: $result = $sql->fetchAll(PDO::FETCH_OBJ); //这不起作用