gta*_*004 3 php mysql sql pdo sql-order-by
我一直在
exception 'PDOException' with message 'SQLSTATE[42000]:
Syntax error or access violation: 1064
You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near
'(questionid, 'sfname' , 'slname' , 'school' , 'grade' , 'addr' , 'city' , 'state' at line 1'
Run Code Online (Sandbox Code Playgroud)
从这个声明:
$stmt = $db->prepare('SELECT * FROM event_responses WHERE eventid= :eventid ORDER BY userid DESC, field (questionid, \''.implode("' , '", $columns1).'\')');
Run Code Online (Sandbox Code Playgroud)
我回应了里面的声明,它对我来说很好看:
SELECT *
FROM event_responses
WHERE eventid= :eventid
ORDER BY userid DESC,
field (questionid, 'sfname' , 'slname' , 'school' , 'grade' , 'addr' , 'city' , 'state' , 'zip' , 'semail' , 'sphone' , 'pfname' , 'plname' , 'pemail' , 'pphone' , 'noattend' , 'regid' , 'submitDate' , 'attended' , 'regmethod')
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
Gor*_*off 11
你在MySQL中遇到了一个奇怪的问题:
注意
默认情况下,函数名称和后面的括号之间不能有空格.这有助于MySQL解析器区分函数调用和对恰好与函数同名的表或列的引用.但是,允许使用函数参数周围的空格.
删除空格后field,表达式为:
SELECT *
FROM event_responses
WHERE eventid = :eventid
ORDER BY userid DESC,
field(questionid, 'sfname' , 'slname' , 'school' , 'grade' , 'addr' , 'city' , 'state' , 'zip' , 'semail' , 'sphone' , 'pfname' , 'plname' , 'pemail' , 'pphone' , 'noattend' , 'regid' , 'submitDate' , 'attended' , 'regmethod')
Run Code Online (Sandbox Code Playgroud)