gpt4 book ai didi

php - Mysql 查询在特定情况下不起作用

转载 作者:可可西里 更新时间:2023-11-01 08:52:12 25 4
gpt4 key购买 nike

有一个包含两列“ques”和“ans”的表格。通过此查询进行比较后,我计算了 mysql_nuum_rows($result) 获取的行数。在某些情况下我会遇到错误,例如如果我为所有问题选择相同的选项(每种情况下的最后一个选项,即单选按钮的 D)。其余部分运行良好。

我做错了什么?

//  (Values are coming from html form consisting of 4 sets of 4 radio buttons)
$q1=$_POST['q1'];
$q2=$_POST['q2'];
$q3=$_POST['q3'];
$q4=$_POST['q4'];
$result = mysql_query("SELECT * FROM Test
WHERE (ques='q1' AND ans='$q1')
OR (ques='q2' AND ans='$q2')
OR (ques='q3' AND ans='$q3')
OR (ques='q4' AND ans='$q4')");

预期输出:
4 个答案中有 3 个正确(3 个来自 mysql_num_rows() )

错误来了:
您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 'q2' AND ans='4') OR (ques='q3' AND ans='4') OR (ques='q4' AND ans) 附近使用的正确语法='4')' 在第 1 行

最佳答案

你做错了什么:

a) 你没有使用准备好的语句。这意味着用户提供的输入将最终出现在您的 SQL 语句中,使您面临不可预见的风险(SQL 注入(inject))。这也可能是 SQL 错误的原因。您可以将 SQL 语句分配给一个变量并将其转储到某个地方,这样您就可以看到您实际上正在尝试做什么。或者(更好)您可以使用准备好的语句。

b) 如果您的表单将扩展到 25 个问题加答案,则 SQL 语句看起来有问题。如果不是 - 为什么要为此使用 SQL 后端?

关于php - Mysql 查询在特定情况下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12014086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com