所以我正在为我的教授们进行一项调查,我决定尝试从头开始编写代码。
我已经尝试过使用JOIN
,但它实际上并不是我想要的,因为我基本上试图在/ foreach循环时尝试选择问题。
当我尝试加入时,它为每个不同的选项提供了一个问题条目,重复每个选项的问题。
我的数据库已设置好所以我在一个表中有问题(其中包含问题和optiongroupid),我有Optiongroups(差 - 非常好|不满意 - 满意)。
这是我目前的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())
有人有一些意见吗?我想做的只是根本不可能吗?或者我是以一种非常糟糕的方式去做的?
由于
答案 0 :(得分:1)
mysqli->query()
不总是返回一个mysqli_result对象。如果执行查询时出错,则返回FALSE。如果$ result具有标量FALSE值,则调用$result->fetch_array()
会出现致命错误。
您应该始终验证mysqli->query()
没有返回FALSE。
$result = $mysqli->query($qry);
if ($result === false) {
trigger_error($mysqli->error, E_USER_ERROR);
}
输出错误后,您将更深入地了解查询无效的原因。例如,您可能拼错了列名,或者您没有权限读取表,或者发生了其他一些错误。除非你检查错误,否则你不会知道。
答案 1 :(得分:0)
mysqli->query()始终返回mysqli_result对象。
首先检查 $ result 或 $ option 是否为有效对象,而不是迭代到循环中。