我的数据库是
CREATE TABLE `mytable` (
`id` int(10) AUTO_INCREMENT,
`name` varchar(50),
`description` varchar(255),
`visible` varchar(10),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET utf8;
和php代码是
$display = query("SELECT * FROM mytable ORDER BY id ASC");
foreach($display as $row) {
echo $row['id'];
echo $row['name'];
echo $row['description'];
}
我的代码有什么问题?数据不显示,显示时仅显示第一个字母。所有配置和连接设置都很好。请帮忙
答案 0 :(得分:1)
var_dump($row);
答案 1 :(得分:1)
看起来我陷入了同样的陷阱:)
你的桌子上只有一排吗?
如果这个query()函数太聪明了,通过返回数据确定返回类型,则可能是一个原因
使其返回嵌套数组,而不是一行。
并明确定义结果类型,而不是基于返回的数据自动定义。添加一个参数以指示您想要的结果类型。
但是,这样的功能是非常好的方法。只有少数人有设计这样一个功能的想法,而不是通过众多API函数不断的麻烦。
但是如果你期望只有一行,那么
$row = query("SELECT * FROM mytable ORDER BY id ASC");
echo $row['id'];
echo $row['name'];
echo $row['description'];
答案 2 :(得分:0)
我使用CodeIgniter时遇到了同样的问题。
对我来说,问题是当我只是一个数字索引的数组时,我试图使用关联键来回显数组值。我很惊讶它有用。
所以我的数组是这样构建的:
$result = $this->ci->db->get('role');
if($result->num_rows() > 0)
{
foreach($result->result_array() as $row)
{
$roles[$row['id']] = $row['name'];
}
}
当我尝试使用这样的数组时:
foreach($roles as $role)
{
echo $role['name'];
}
它只会打印出每个值的第一个字母。
当我改变要构建的数组时:
$roles[$row['id']] = array('name' => $row['name']);
一切都按预期工作。
希望这有助于某人。