[英]how can we assign a ORDER BY in two seperate fields in MySql query?
how i set order by for two separate fields in mysql 我如何在mysql中为两个单独的字段设置顺序
CODE 码
$sql = 'SELECT q.question_id, a.answer_id, q.question_name, a.option_name, q.display_order AS ques_order, a.correct, a.display_order AS opt_order FROM questions q JOIN answers a ON (a.question_id = q.question_id) WHERE test_id = '.$m_test_id.' ORDER BY ques_order, opt_order ASC';
error message: 错误信息:
MysqlError: You have an error in your SQL syntax;
MysqlError:您的SQL语法有错误; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY ques_order, opt_order ASC' at line 4
检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第4行的“ ORDER BY ques_order,opt_order ASC”附近使用
ORDER BY ques_order, opt_order ASC;
There's something wrong with $m_test_id
; $m_test_id
; it's probably empty and causing issues with the SQL grammar. 它可能是空的,并导致SQL语法出现问题。 Consider using prepared statements:
考虑使用准备好的语句:
$sql = 'SELECT q.question_id, a.answer_id, q.question_name, a.option_name, q.display_order AS
ques_order, a.correct, a.display_order AS opt_order
FROM questions q
JOIN answers a ON a.question_id = q.question_id
WHERE test_id = :test
ORDER BY ques_order, opt_order ASC';
$stmt = $db->prepare($sql);
$stmt->execute(array(':test' => $m_test_id));
Besides that, you should find out why $m_test_id
was empty in the first place. 除此之外,您应该首先找出为什么
$m_test_id
为空。
If you're not using PDO or mysqli you can use mysql_real_escape_string()
but note that it's deprecated and shouldn't be used anymore. 如果您不使用PDO或mysqli ,则可以使用
mysql_real_escape_string()
但请注意,它已被弃用,不应再使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.