我在这方面已经有一段时间了。使用PDO的文档并基于较旧的stackoverflow帖子,我觉得我做得很正确,但我不知道fetchAll返回的数组中我的数据在哪里。如有任何帮助,我们将不胜感激。
在我的DatabaseHandler类中:
public function getStateList(){
$root = "root";
$rootpasswd = "password";
$host = "localhost";
try{
$dbh = new PDO("mysql:host=$host;dbname=TESTDATA;", $root, $rootpasswd);
$stmt = $dbh->prepare("SELECT id FROM state");
if(!$stmt->execute()){
//error
}
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
}catch(PDOExeption $e){
//catch exception
}
}
现在,当调用这个方法时,它会返回一个52 id的数组,这是它应该做的,但我无法获得这些数据。为什么?这是调用该方法的代码。
<?php
require("./Database/DatabaseHandler.php");
$dbh = new DatabaseHandler();
$stateCodes = $dbh->getStateList();
$max = sizeof($stateCodes);
error_log("Arraysize=".$max."n", 3, "/testlog/data.dat");
error_log("Position 0: ".$stateCodes[0]."n", 3, "/testlog/data.dat");
error_log("Position[0][0]: ".$stateCodes[0][0]."n", 3, "/testlog/data.dat");
error_log("Position[0][0][0]: ".$stateCodes[0][0][0]."n", 3, "/testlog/data.dat");
?>
第一个错误日志记录52。第二个返回单词Array,这让我觉得它是一个2暗的数组。第三个什么都没有。第四无。
我知道我在使用fetchAll时出错了,但我不知道在哪里或如何使用。提前谢谢。
您已经使用了PDO::FETCH_ASSOC
,它将是一个关联数组。
但是,由于您正在获取所有数组,因此数组是二维的。
$stateCodes[0]['id'];
或者,你可以这样循环:
foreach($stateCodes as $code){
error_log("Code Id =" . $code['id']);
}