Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将ORDER按语法追加到php MySQL查询_Php_Mysql - Fatal编程技术网

将ORDER按语法追加到php MySQL查询

将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

我正在尝试向用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"));
当我尝试按追加订单时,它会抛出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个错误,这是由解析错误引起的。任何逻辑错误或其他错误都不是问题的一部分。。