【发布时间】:2012-12-26 14:04:49
【问题描述】:
我正在尝试使用类似这样的方法将 MySQL while 循环链接到 foreach 循环中:
if($something == true){
foreach($array as $arr){
} else {
while($row = mysql_fetch_array($mysql_query)){
}
// loop instructions
}
看起来很不对劲,我知道,但你知道我在做什么吗?如果$something 为真,我想从数组中获取数据,否则从数据库中获取数据
我有另一个解决方案的想法,它手动将数组与$mysql_query 的工作方式相匹配,这样我就可以将它们都与while 一起使用,就像这样:
if($something == true){
$mysql_query = array("username" => "$_GET['username']", "password" => "$_GET['password']");
} else {
$mysql_query = mysql_query("SELECT * FROM users WHERE usern......");
}
while($row = mysql_fetch_array($mysql_query)){
...
这是第二种方法,但它看起来也有问题,因为第一个数组是正常的,我想将该正常数组与 mysql_query 构建它的方式相匹配,以便它可以适应 while 循环
附言:我不想想重复编写循环指令,我希望它们都只使用我上面提到的一个
【问题讨论】:
-
将
if/else替换为if(!$something) { $array = /* collect all results from MySQL */; }。之后,您将能够在这两种情况下使用foreach ($array as $arr) {。顺便说一句,停止使用mysql_函数并改用mysqli/PDO。 -
看起来 $array 是一个多维数组。对吗,它是一个二维数组吗?结果集中是否有多行?
-
我想将所有结果收集到一个数组中会增加 PHP 上的巨大过程,不过让我看看一种将它们收集到你的答案中的方法
-
将所有结果收集到一个数组中对我来说似乎是个好主意。慎重使用 WHERE 和 GROUP 子句可以减小结果集的大小。
-
欢迎来到 Stack Overflow! Please, don't use
mysql_*functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial.