我有2个值,我正在提供我的脚本 - 我想搜索这些数据中的任何一个。如何编写我的查询:
SELECT * FROM table WHERE id = '".$id."' or "name='".$name."';
我的问题是转发查询中的引号。
任何帮助将不胜感激。
答案 0 :(得分:2)
有几种方法可以做到,很多人不赞成但一般我会坚持使用MySQLi并使用
mysqli_real_escape_string($id)
功能或在OOP中
$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}'");
答案 1 :(得分:0)
Use this fancy function, mayhaps?这些例子有你想要的东西。
答案 2 :(得分:0)
你有额外的报价;如果您想坚持使用原始代码(不推荐),请尝试以下方法:
$query = "SELECT * FROM table WHERE id = '".$id."' or name='".$name."'";
但实际上您应该使用参数化查询,以避免可能的SQL注入安全问题!
答案 3 :(得分:0)
将其写为:
$name = mysql_real_escape_string($name);
$id = mysql_real_escape_string($id);
$query = "SELECT * FROM table WHERE id = '$id' or name= '$name' ";
因为您以双引号开头,所以单引号是查询的一部分,并且$ vars已展开。
答案 4 :(得分:0)
您可以使用大括号来避免与转义字符混淆,如下所示:
$query = "SELECT * FROM table WHERE id = '{$id}' or name = '{$name}' ";
您还可以考虑使用%$letter%
等通配符在name
字段中的任意位置搜索单词:
$query = "SELECT * FROM table WHERE id = '{$id}' or name LIKE '%{$name}%' ";
<强> SUGGESTTION 强>:
您应始终将id
字段用作integer
以获得更好的效果。