简体   繁体   English

我们如何在MySql查询的两个单独的字段中分配ORDER BY?

[英]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. 如果您不使用PDOmysqli ,则可以使用mysql_real_escape_string()但请注意,它已被弃用,不应再使用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM