0

我有一个 PHP 页面,上面有 3 个下拉列表。每次使用“onchange”事件时,javascript 文档都会获取选定的值并将其传输到 php 函数,在那里我可以将它们传输到我的 mysql 数据库并从中获取结果。这个东西很完美,但当我应用我的逻辑来定义我应该调用哪个函数时

我的 php 页面包含有效的逻辑(参见代码框),并且需要有 2 个带有操作的函数。该功能确实有效,但问题是这个。在 if-else 构造中,有可能在 2 个不同的时刻调用函数。第一次在 if-else 构造中,两个调用都成功了,结果应该是这样,第二次似乎 $result 参数为空?

$result = mysql_query($sql) or die("Query failed with error: ".mysql_error());

$aantal = mysql_num_rows($result);
if($amount == 0){


echo "<p>This combination does not exist</p>";
    }
    else {
        // lists are empty
        if($soort == 'Empty' && $land == 'Empty' && $jaar == 'Empty'){
        }
        else {
            if ($aantal > 2){
                maketable($aantal, $result); // -> **succesfull call**
            }
            else if($aantal == 1){
                makedetails($result); // -> **succesfull call**
            }
            else {
                $first = mysql_result($result, 0);
                $second = mysql_result($result, 1);
                if (($second - $first) == 1){
                    makedetails($result); //  -> **does not work**
                }
                else {
                    maketable($aantal, $result); //  -> **does not work**
                }
            }
        }
    }

function maketable($aantal, $result) { … }
function makedetails($result){ … }

问候

4

3 回答 3

0

你没有显示你的查询,所以我们不知道发生了什么。但是 mysql_result 默认返回指定行中的 FIRST 字段,如果你没有明确说明要使用哪个字段,所以除非你的查询是

SELECT somenumber FROM yourtable ...

那么你的 mysql_result 将获取谁知道什么。请注意,您还比较了来自两个不同行的默认“第一个”值 - 您确定查询实际上返回了 2 行以上的数据吗?

于 2012-07-29T18:12:25.330 回答
0

$aantal 是受查询影响的行数。您的逻辑不起作用,因为您在没有行受影响时尝试使用查询结果。

你的逻辑:

$result = mysql_query($sql);
$number_of_rows = mysql_num_rows($result);
if ($number_of_rows > 2)
{
   //do something
}
else if ( $number_of_rows == 1)
{
   //Do something else
}
else if( $number_of_rows == 2 OR $number_of_rows == 0)
{
   // Do something else (the part which fails)
}

到达该部分并且不失败的唯一方法是如果受影响的行正好是 2。当它们为 0 时,查询没有返回任何内容,您正在尝试访问一个空的结果集。

于 2012-07-29T18:21:39.393 回答
0

必须再次获取我的结果才能再次循环遍历我的数组。

$first = mysql_result($result, 0);
$second = mysql_result($result, 1);
$result = mysql_query($sql) or die("Query failed with error: ".mysql_error());

但是感谢您的帮助!

问候

于 2012-08-04T17:03:16.733 回答