我有一个在PHP 5.3中运行良好的脚本。新主机只支持5.5,所以我做了一些修改。到目前为止,我只能获得一行返回。我已经痛苦了几个小时,我只是不明白为什么。
这可能是因为我在while循环后没有使用array_push()吗?在我的原始脚本中我得到了它,但发现了这个,我得到了500内部服务器错误,如果我把它取出就消失了。
<?php
$mysqli = mysqli_connect("localhost", "user", "password", "database");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$row_array = array();
$query = "SELECT title,year,author,journal,keywords,abstract,url FROM entries";
if ($result = mysqli_query($mysqli, $query)) {
/* fetch object array */
while ($row = mysqli_fetch_assoc($result)) {
$row_array['title'] = $row['title'];
$row_array['year'] = $row['year'];
$row_array['author'] = $row['author'];
$row_array['journal'] = $row['journal'];
$row_array['keywords'] = $row['keywords'];
$row_array['abstract'] = $row['abstract'];
$row_array['url'] = $row['url'];
}
echo '{"data":';
echo json_encode($row_array);
echo '}';
/* free result set */
$result->close();
}
/* close connection */
$mysqli->close();
?>
返回的是:
{&#34;数据&#34;:{&#34;标题&#34;:&#34; ERGOT属Clavisps&#34;,&#34;年&#34;:&#34; 1999&# 34;&#34;笔者&#34;:无效,&#34;中国&#34;:无效,&#34;关键字&#34;:&#34; LSD&#34;&#34;抽象&#34 ;:空,&#34; URL&#34;:空}}
哪个好,花花公子,除了大约9500个其他行应该带回来。
答案 0 :(得分:1)
if
答案 1 :(得分:1)
你需要有一个多维数组并且你已经采用了一维数组。
因此,每次记录到来时,它都会覆盖旧记录。
因此,您只能获得最后一条记录。
将您的代码修改为:
$i=0;
$row_array = array();
while ($row = mysqli_fetch_assoc($result)) {
$row_array[$i]['title'] = $row['title'];
$row_array[$i]['year'] = $row['year'];
$row_array[$i]['author'] = $row['author'];
$row_array[$i]['journal'] = $row['journal'];
$row_array[$i]['keywords'] = $row['keywords'];
$row_array[$i]['abstract'] = $row['abstract'];
$row_array[$i]['url'] = $row['url'];
++$i;
}
答案 2 :(得分:0)
你的$row_array
每次都会替换,你会得到最后一个。将您的代码更改为:
$i = 0;
while ($row = mysqli_fetch_assoc($result)) {
$row_array[$i]['title'] = $row['title'];
$row_array[$i]['year'] = $row['year'];
$row_array[$i]['author'] = $row['author'];
$row_array[$i]['journal'] = $row['journal'];
$row_array[$i]['keywords'] = $row['keywords'];
$row_array[$i]['abstract'] = $row['abstract'];
$row_array[$i]['url'] = $row['url'];
$i++;
}
echo '{"data":';
echo json_encode($row_array);
echo '}';
答案 3 :(得分:0)
你的while循环不断覆盖$ row_array数组中相同的数组元素。
要做你想做的事: while($ row = mysqli_fetch_assoc($ result)){ $ row_array [] = $ row; }