【发布时间】:2017-09-22 08:23:18
【问题描述】:
您好,我正在尝试使用以下代码从我的数据库中获取数据:
public function getAllConstitutionPages($id){
$result = $this->conn->prepare("SELECT para.id, para.pageFk,
para.title, para.subtitle, para.paragraph
FROM `constitutionpage_tb` page
JOIN constitutionpageparagraph_tb para ON para.pageFk = page.id
WHERE page.constitutionFk IN (?)");
$result->bind_param("s", $id);
$result->execute();
$response["pages"] = array();
$result->bind_result($id, $pageFk, $title, $subTitle, $paragraph);
while($row = $result->fetch())
{
$page = array();
$page["id"] = $id;
$page["pageFk"] = $pageFk;
$page["title"] = $title;
$page["subTitle"] = $subTitle;
$page["paragraph"] = $paragraph;
echo.$paragraph;//prints out the paragraph in the browser
$response["pages"][] = $page;
}
return $response;
}
查询选择了 5 个列,我使用 bind_result 成功绑定了 while 循环,由于某些未知原因,当我添加 $page["paragraph"] = $paragraph; 时,查询没有返回任何内容,甚至没有返回空的 pages 数组,那一刻我删除它我得到了所有数据,查询没有任何问题,因为我已经在 phpmyadmin 中对其进行了测试,它返回了包括段落在内的所有 5 列,上次我遇到这样的问题是因为我在 bind_result 中有 2 个变量与page 数组同名,所以它正在消耗自己,但在这种情况下我没有,有人帮我检测我的错误
更新
在与代码搏斗后,我尝试从循环中回显paragraph,我意识到它的回显成功,我无法理解的是为什么不能将它存储在数组中,为什么当我什么都不添加时绝对没有返回任何内容,甚至没有错误消息
【问题讨论】:
-
您正在定义数组 $page = array();循环内。您应该在之前创建它并添加正在循环的项目。
-
@GiacomoPittalis 添加您的评论作为答案
-
@GiacomoPittalis 是的,一个大数组中的小数组很容易转换为单个对象,因此理想情况下 $page 是一个对象
-
@GiacomoPittalis 看看simplifiedcoding.net/retrofit-android-tutorial 上的 getMessages() 方法,人们总是这样做