Php MySQL Select语句
我在脚本中提供了两个值-我想搜索其中任何一个数据。如何像这样编写查询:Php MySQL Select语句,php,mysql,Php,Mysql,我在脚本中提供了两个值-我想搜索其中任何一个数据。如何像这样编写查询: SELECT * FROM table WHERE id = '".$id."' or "name='".$name."'; 我的问题是在查询中转义引号 任何帮助都将不胜感激。这些示例都是您需要的。您有一个额外的报价;如果要坚持使用原始代码(不推荐),请尝试以下操作: $query = "SELECT * FROM table WHERE id = '".$id."' or name='".$name."'"; 但实际上
SELECT * FROM table WHERE id = '".$id."' or "name='".$name."';
我的问题是在查询中转义引号
任何帮助都将不胜感激。这些示例都是您需要的。您有一个额外的报价;如果要坚持使用原始代码(不推荐),请尝试以下操作:
$query = "SELECT * FROM table WHERE id = '".$id."' or name='".$name."'";
但实际上,您应该使用参数化查询,以避免可能的SQL注入安全问题 有几种方法可以做到这一点,很多方法都不赞成,但通常我会坚持使用MySQLi和
mysqli_real_escape_string($id)
面向对象编程中的函数或
$mysqli = new mysqli('host', 'user', 'pass', 'database');
$id = $mysqli -> real_escape_string($id);
$name = $mysqli -> real_escape_string($name);
$results = $mysqli -> query("SELECT * FROM table WHERE id = '{$id}' or "name='{$name}'");
写为:
$name = mysql_real_escape_string($name);
$id = mysql_real_escape_string($id);
$query = "SELECT * FROM table WHERE id = '$id' or name= '$name' ";
因为您是以双引号开始的,所以单引号是查询的一部分,$vars被展开。您可以使用大括号来避免与转义字符混淆,如下所示:
$query = "SELECT * FROM table WHERE id = '{$id}' or name = '{$name}' ";
您还可以考虑使用通配符(如代码> %$No.%<代码>)在<代码>名称< /代码>字段中搜索任何单词,如:
$query = "SELECT * FROM table WHERE id = '{$id}' or name LIKE '%{$name}%' ";
建议:
您应该始终使用
id
字段作为integer
,以获得更好的性能。您不需要{}
只需将它们去掉,所有这些字段都可以正常工作,只有当你想包含一个函数结果时才需要它们。我把它们放进去,因为它们没有指定它是否是函数的结果,如果不是函数的结果,它不会以任何方式停止连接。如果你要使用MySQLi,为什么不使用一个准备好的语句呢?我只是让它对用户来说很简单,因为准备好的语句可能会很痛苦,他们会问如何编写一个查询,我认为这是他们能力的一个相当好的基准,我想这一点很好。我只是觉得至少应该提到它,这样她就可以考虑升级到它了。谢谢你,我有一个代码可以逃避提供的数据。很好的解决方案。这是一个很棒的解决方案-它有我需要的一切。非常感谢,不客气。请喜欢您最喜欢的解决方案。这将鼓励我们回答尽可能多和尽可能相关的问题:)