-1

所以我正在为我的教授进行一项调查,我决定我想尝试从头开始编写代码。

我已经尝试过使用JOIN,但这并不是我真正想要的,因为我本质上是在尝试在 while/foreach 循环的问题之间设置选项。

当我尝试加入时,它给了我每个不同选项的问题条目,重复每个选项的问题。

我的数据库已设置,因此我在一张表中有问题(其中包含问题和 optiongroupid),并且我有选项组(差 - 优秀 | 不满意 - 满意)。

这是我当前的 php 代码:

 $qry = "SELECT QuestionName, QuestionSubtext, OptionGroupID FROM Questions;";
    $qry2 = "SELECT OptionChoiceName, OptionGroupID FROM OptionGroups;";

    $result = $mysqli->query($qry);
    $option = $mysqli->query($qry2);

    while($row = $result->fetch_array())
        {   
            $rows[] = $row; 
        }
    while($row = $option->fetch_array())
        {
            $rows2[] = $row;
        }
    foreach($rows as $row)
        {
            echo '<font size=4><strong>' . $row['QuestionSubtext'] . '. ' . $row['QuestionName'] . '</strong></font>';
            echo '<div id="options">';
            foreach($rows2 as $rows)
            {
                if ($rows['OptionGroupID'] = $row['OptionGroupID'])
                {
                    echo '<input type="radio" name="satisfy[]" value="' . $rows['OptionChoiceName'] . '">' . $rows['OptionChoiceName'] . '</input>';
                }
            }
            echo "</div>";
            echo "<br>";
        }

我的大问题是现在我得到了PHP Fatal error: Call to a member function fetch_array() on a non-object in /var/www/test/alumni.php on line 66

第 66 行是while($row = $option->fetch_array())

有人有意见吗?我正在尝试做的事情是不可能的吗?还是我真的很糟糕?

谢谢

4

2 回答 2

1

mysqli->query()并不总是返回 mysqli_result 对象。如果执行查询时出错,则返回 FALSE。$result->fetch_array()如果 $result 具有标量 FALSE 值,则调用它是一个致命错误。

您应该始终验证mysqli->query()没有返回 FALSE。

$result = $mysqli->query($qry);
if ($result === false) {
    trigger_error($mysqli->error, E_USER_ERROR);
}

输出错误后,您将更深入地了解查询不起作用的原因。例如,您可能拼错了列名,或者您没有读取表格的权限,或者发生了其他错误。除非您检查错误,否则您不会知道。

于 2013-07-02T18:20:28.673 回答
0

mysqli->query()总是返回 mysqli_result 对象。

所以首先检查$result$option是否是有效对象,而不是迭代到循环中。

于 2013-07-02T17:54:59.613 回答