【发布时间】:2016-01-11 22:35:48
【问题描述】:
我一直在尝试从创建新类“Book”的 mysqli 查询创建一个数组。当我运行此代码时,它会返回数据库中正确的行数,但不会显示行中的任何值。绝对是很多这些东西的新手,非常感谢任何帮助!这是我正在运行的代码。如果我只是放入一个预先填充的数组,那么代码一切都很好。我的问题是从数据库中获取值到这个数组中。
$db = new db();
$conn = $db->connect();
$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);
$thearray = array();
while($array_ar = mysqli_fetch_array($result)){
$thearray[] = array(
$array_ar['username'] => new Book($array_ar['username'], $array_ar['first_name'], $array_ar['last_name']),
);
}
echo 'Rows found: ' . mysqli_num_rows($result);
return $thearray;
好的,所以我 var_dump($thearray);它给了我一个多维数组,这就是它返回空值的原因。我想我需要它来返回一个关联数组?这就是它 var_dump($thearray);返回:
array(4) {
[0]=> array(1) {
["joshua"]=> object(Book)#6 (3) {
["title"]=> string(6) "joshua" ["author"]=> string(6) "Joshua" ["description"]=> string(9) "Lundquist"
}
}
[1]=> array(1) {
["matthew"]=> object(Book)#7 (3) {
["title"]=> string(7) "matthew" ["author"]=> string(4) "Matt" ["description"]=> string(3) "Alm"
}
}
[2]=> array(1) {
["roger"]=> object(Book)#8 (3) {
["title"]=> string(5) "roger" ["author"]=> string(5) "Roger" ["description"]=> string(9) "Lundquist"
}
}
[3]=> array(1) {
["norm"]=> object(Book)#9 (3) {
["title"]=> string(4) "norm" ["author"]=> string(4) "Norm" ["description"]=> string(5) "Shupe"
}
}
}
接下来我想看看 var_dump();因为我的硬编码数组看起来像,它输出这个(这个有效):
array(3) {
["Jungle Book"]=> object(Book)#3 (3) {
["title"]=> string(11) "Jungle Book" ["author"]=> string(10) "R. Kipling" ["description"]=> string(15) "A classic book."
}
["Moonwalker"]=> object(Book)#4 (3) {
["title"]=> string(10) "Moonwalker" ["author"]=> string(9) "J. Walker" ["description"]=> string(7) "another"
}
["PHP for Dummies"]=> object(Book)#5 (3) {
["title"]=> string(15) "PHP for Dummies" ["author"]=> string(14) "Some Smart Guy" ["description"]=> string(18) "and the final one."
}
}
发生的事情对我来说很有意义,但我不确定如何修复我的代码。感谢您的帮助!
【问题讨论】:
-
既然你已经在你的代码中加入了一个 echo/prinft “调试器”,那么在
return $thearray;之前的var_dump($thearray);会打印什么?你用error_reporting=E_ALL|E_STRICT看php error log吗? -
打开
error_reporting(E_ALL);并检查是否有任何警告。 -
我添加了 var_dump();并注意到上面的变化。再次感谢您的帮助!