CODE1:
while( $row1 = mysql_fetch_array($result2) && $row2 = mysql_fetch_array($result4) )
{
$details[0] = $row1[0];
$details[1] = $row2[0];
var_dump($details[0]);
var_dump($details[1]);
}
OUTPUT1:
NULL string(1) "5"
CODE2:
while($row1 = mysql_fetch_array($result2))
{
$details[0] = $row1[0];
var_dump($details[0]);
}
while($row2 = mysql_fetch_array($result4))
{
$details[1] = $row2[0];
var_dump($details[1]);
}
OUTPUT2:
string(6) "728548" string(1) "5"
**OUTPUT2**
是理想的结果。我已经检查了我在这里没有提到的代码的其余部分,没有任何问题。使用**CODE1**
代替**CODE2**
会产生错误的结果。我尝试**CODE1**
只是为了减少代码的长度,但它无效。为什么我们不能像mysql_fetch_array()
中那样使用多个**CODE1**
?
答案 0 :(得分:3)
&&
的{{3}}高于=
。因此,将括号括在两个部分周围并尝试:
while(($row1 = mysql_fetch_array($result2)) && ($row2 = mysql_fetch_array($result4)))
答案 1 :(得分:2)
就像在做
$true = false;
while(true && $true)
{
$true = false;
}
如果他们中的任何人因为false / null而另一个人也会失败,那么除非你的行完全相同,否则会遇到问题!
在这种情况下你最擅长的是
while( ($result_2 = mysql_fetch_array($result2)) || ($result_4 = mysql_fetch_array($result4)))
{
if($result_2)
{
//Do something
}
if($result_4)
{
//Do something
}
}
使用||
/ or
可以取消一个,另一个继续,但这不是很好的编程标准!
答案 2 :(得分:0)
mysql_fetch_array()逐行处理数据库结果。如果你在一个循环中执行的不仅仅是mysql_fetch_array,这意味着你只能走N行。
其中N是'$ result'选择的最小行数。
答案 3 :(得分:0)
唯一减少代码长度的正确方法是制作功能。
例如,一个函数将查询并将其参数作为参数并返回一个数组
喜欢这个
<?
function dbgetarr(){
$a = array();
$query = $args[0];
unset ($args[0]);
foreach ($args as $key => $val) {
$args[$key] = "'".mysql_real_escape_string($val)."'";
}
$query = vsprintf($query, $args);
$res = mysql_query($query);
if (!$res) {
trigger_error("dbget: ".mysql_error()." in ".$query);
} else {
while($row = mysql_fetch_assoc($res)) $a[]=$row;
}
return $a;
}
但在您的情况下,您似乎不需要数组也不需要运算符 但就像
那样愚蠢的代码$row1 = mysql_fetch_array($result2)
$row2 = mysql_fetch_array($result4)
$details = array($row1[0],$row2[0]);
所以我们可以从中学习,了解你在做什么总是有帮助