将ORDER按语法追加到php MySQL查询
我正在尝试向用PHP执行的MySQL连接查询添加一个ORDER BY语法。我使用已定义的会话变量动态选择条件 工作正常:将ORDER按语法追加到php MySQL查询,php,mysql,Php,Mysql,我正在尝试向用PHP执行的MySQL连接查询添加一个ORDER BY语法。我使用已定义的会话变量动态选择条件 工作正常: $query_icons = sprintf("SELECT i.id, i.name, e.EmpNo FROM gbl_icons i LEFT JOIN gbl_empicons e ON e.IconId = i.id AND e.EmpNo = %s", GetSQLValueString($ParamEmpNo_WADAgbl_qemplisting, "text
$query_icons = sprintf("SELECT i.id, i.name, e.EmpNo FROM gbl_icons i LEFT JOIN gbl_empicons e ON e.IconId = i.id AND e.EmpNo = %s", GetSQLValueString($ParamEmpNo_WADAgbl_qemplisting, "text"));
当我尝试按追加订单时,它会抛出500个内部服务器错误:
$query_icons = sprintf("SELECT i.id, i.name, e.EmpNo FROM gbl_icons i LEFT JOIN gbl_empicons e ON e.IconId = i.id AND e.EmpNo = %s", GetSQLValueString($ParamEmpNo_WADAgbl_qemplisting, "text")ORDER BY i.id ASC);
如何正确转义动态会话值?执行以下操作:
$query_icons = sprintf("SELECT i.id, i.name, e.EmpNo FROM gbl_icons i LEFT JOIN gbl_empicons e ON e.IconId = i.id AND e.EmpNo = %s", GetSQLValueString($ParamEmpNo_WADAgbl_qemplisting, "text")."ORDER BY i.id ASC");
您忘了将ORDER BY i.id ASC嵌入到“中”,因此出现了严重的语法错误
正如评论中提到的,这也会起作用:
$query_icons = sprintf("SELECT i.id, i.name, e.EmpNo FROM gbl_icons i LEFT JOIN gbl_empicons e ON e.IconId = i.id AND e.EmpNo = %s ORDER BY i.id ASC", GetSQLValueString($ParamEmpNo_WADAgbl_qemplisting, "text"));
这样做:
$query_icons = sprintf("SELECT i.id, i.name, e.EmpNo FROM gbl_icons i LEFT JOIN gbl_empicons e ON e.IconId = i.id AND e.EmpNo = %s", GetSQLValueString($ParamEmpNo_WADAgbl_qemplisting, "text")."ORDER BY i.id ASC");
您忘了将ORDER BY i.id ASC嵌入到“中”,因此出现了严重的语法错误
正如评论中提到的,这也会起作用:
$query_icons = sprintf("SELECT i.id, i.name, e.EmpNo FROM gbl_icons i LEFT JOIN gbl_empicons e ON e.IconId = i.id AND e.EmpNo = %s ORDER BY i.id ASC", GetSQLValueString($ParamEmpNo_WADAgbl_qemplisting, "text"));
将顺序按放在字符串中“%s”之后 另外,直接将SQL查询伪造成字符串是非常不安全的,请尝试使用PDO或其他数据访问层来创建安全的参数化请求
$query_icons = sprintf("SELECT i.id, i.name, e.EmpNo FROM gbl_icons i LEFT JOIN gbl_empicons e ON e.IconId = i.id AND e.EmpNo = %s ORDER BY i.id ASC", GetSQLValueString($ParamEmpNo_WADAgbl_qemplisting, "text"));
将顺序按放在字符串中“%s”之后 另外,直接将SQL查询伪造成字符串是非常不安全的,请尝试使用PDO或其他数据访问层来创建安全的参数化请求
$query_icons = sprintf("SELECT i.id, i.name, e.EmpNo FROM gbl_icons i LEFT JOIN gbl_empicons e ON e.IconId = i.id AND e.EmpNo = %s ORDER BY i.id ASC", GetSQLValueString($ParamEmpNo_WADAgbl_qemplisting, "text"));
为什么不把它放在主字符串中?你确定第一部分吗?@JaredFarrish是的,因为“%s”表示stringRight。所以第一部分很可能没有解决解析错误之后的问题。@JaredFarrish什么问题没有解决?他说服务器给出了500个错误,这是由解析错误引起的。任何逻辑错误或其他错误都不是问题的一部分。为什么不把它放在主字符串中?你确定第一部分是吗?@JaredFarrish是的,因为“%s”表示stringRight。所以第一部分很可能没有解决解析错误之后的问题。@JaredFarrish什么问题没有解决?他说服务器给出了500个错误,这是由解析错误引起的。任何逻辑错误或其他错误都不是问题的一部分。。