我有一个像这样的PHP代码:
$categories_query = tep_db_query("select categories_id, categories_name from categories order by categories_name");
while ($categories = mysql_fetch_array($categories_query)) {
$categories_array[] = array('id' => $categories['categories_id'], 'text' => $categories['categories_name']);
}
问题是如何用例如foreach替换while循环所以我可以先获取mysql数组,然后我想编辑一些值然后将其传递给循环?我尝试了不同版本的循环,但它们没有给我与while循环相同的结果。
答案 0 :(得分:1)
PHP没有mysql_fetch函数,可以一次性传递所有行,可以在foreach外观中使用。
尝试在一个循环中获取所有行并构建包含所有行的数组。然后,迭代此数组并按照您的描述执行操作。
答案 1 :(得分:0)
从它的外观来看,循环的目的只是重命名一些表列。
只是做:
<?php
$categories_array = mysqli_query( mysqli_fetch_assoc($con,"SELECT categories_id AS id, categories_name AS text FROM categories ORDER BY categories_name") );
?>
答案 2 :(得分:0)
你所尝试的看起来不错。旧的和已弃用的mysql
库中没有“fetch all”函数。您应该切换到mysqli
或PDO
在PDO
中,您可以使用$statement->fetchAll()
获取所有结果数据。
如果您仍想使用旧mysql
库解决问题,请:
$categories_query = tep_db_query("select categories_id, categories_name from categories order by categories_name");
while ($categories = mysql_fetch_array($categories_query))
{
$categories_array[] = array('id' => $categories['categories_id'], 'text' => $categories['categories_name']);
}
// do something with your $categories_array here
foreach($categories_array AS $array => $row)
{
// you can output / access each row here e.g. with: $row['id']
// or you can do a second foreach-loop for the columns:
foreach($row AS $col => $data)
{
echo $data;
}
}