我有PHP代码,但我无法让它工作?
这是主要的PHP文件:
function get_data() {
$query = 'SELECT title, article FROM submissions';
$result = mysql_query($query);
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
++$i;
$row['i'] = $i;
$row['title'] = limittext($row['title'], 15);
}
return $row; //perhaps because $row is not return all?
}
$data = get_data();
require('template/data.inc.php');
?>
这是template / data.inc.php:
<?php
foreach ($data as $value):
echo $data['i'].'<br>';
echo $data['title'].'<br>';
echo $data['article'].'<br>';
endforeach;
?>
template / data.inc.php意味着输出如下内容:
1 How to get your site on Google?
Text...
2 Secrets of SEO Revealed
Text...
我的猜测是get_data()没有以foreach中支持的形式返回array()吗? - 因为它目前正在给出错误。
答案 0 :(得分:5)
这是你的问题:
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
++$i;
$row['i'] = $i;
$row['title'] = limittext($row['title'], 15);
}
在每次迭代中,$row
都会重置为当前记录,最后mysql_fetch_assoc
会将其转为FALSE
。您必须将每个$row
放入辅助数组并将其作为整个结果集返回:
$i = 0;
$returnArray = array();
while ($row = mysql_fetch_assoc($result)) {
++$i;
$row['i'] = $i;
$row['title'] = limittext($row['title'], 15);
$returnArray[] = $row;
}
return $returnArray;
您的模板中的ANd使用$value
获取每行的详细信息:
foreach ($data as $value):
echo $value['i'].'<br>';
echo $value['title'].'<br>';
echo $value['article'].'<br>';
endforeach;
答案 1 :(得分:0)
您构建$ row并返回它的方式
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
++$i;
$row['i'] = $i;
$row['title'] = limittext($row['title'], 15);
}
return $row;
}
你只会设置$ row的最后一次迭代...如果这是你想要的?换句话说,$ row只会继续一个值。
答案 2 :(得分:0)
循环继续,直到$ row的值被评估为false:
while ($row = mysql_fetch_assoc($result)) {
然后你返回$ row所以你总是返回null或false!
替换
$row['title'] = limittext($row['title'], 15);
与
$row['title'] = limittext($row['title'], 15);
$result[]=$row;
和
return $row;
与
return $result;