我有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');
?>
Run Code Online (Sandbox Code Playgroud)
这是template/data.inc.php:
<?php
foreach ($data as $value):
echo $data['i'].'<br>';
echo $data['title'].'<br>';
echo $data['article'].'<br>';
endforeach;
?>
Run Code Online (Sandbox Code Playgroud)
template/data.inc.php意味着输出如下内容:
1 How to get your site on Google?
Text...
2 Secrets of SEO Revealed
Text...
Run Code Online (Sandbox Code Playgroud)
我的猜测是get_data()没有以foreach中支持的形式返回array()吗? - 因为它目前给出错误.
这是你的问题:
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
++$i;
$row['i'] = $i;
$row['title'] = limittext($row['title'], 15);
}
Run Code Online (Sandbox Code Playgroud)
在每次迭代时,$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;
Run Code Online (Sandbox Code Playgroud)
在模板中使用$value以获取每行的详细信息:
foreach ($data as $value):
echo $value['i'].'<br>';
echo $value['title'].'<br>';
echo $value['article'].'<br>';
endforeach;
Run Code Online (Sandbox Code Playgroud)