我有2个值,我正在补充我的脚本 - 我想搜索这些数据中的任何一个。我该如何写这样的查询:MySQL Select语句
SELECT * FROM table WHERE id = '".$id."' or "name='".$name."';
我的问题是转义查询中的引号。
任何帮助将不胜感激。
我有2个值,我正在补充我的脚本 - 我想搜索这些数据中的任何一个。我该如何写这样的查询:MySQL Select语句
SELECT * FROM table WHERE id = '".$id."' or "name='".$name."';
我的问题是转义查询中的引号。
任何帮助将不胜感激。
你可以使用大括号,以避免转义字符混乱如下:
$query = "SELECT * FROM table WHERE id = '{$id}' or name = '{$name}' ";
您也可以考虑在name
字段使用通配符如%$letter%
搜索词的任何地方:
$query = "SELECT * FROM table WHERE id = '{$id}' or name LIKE '%{$name}%' ";
建议: 为了获得更好的性能,您应该始终使用id
字段作为integer
。
这是一个非常棒的解决方案 - 它拥有我需要的一切。太感谢了。 – Julie
不客气。请喜欢你最喜欢的解决方案。这会鼓励我们回答尽可能多和相关的问题:) –
Use this fancy function, mayhaps?这些示例具有您正在查找的内容。
你有额外的报价;如果你要坚持你原来的代码(不推荐),尝试这样的事情:
$query = "SELECT * FROM table WHERE id = '".$id."' or name='".$name."'";
但真的是你应该使用参数化查询,以便您避免可能的SQL注入安全问题!
谢谢你,我有一个代码可以逃脱提供的数据。好的解决方案BTW。 – Julie
有几个方法可以做到这一点,他们中的很多皱起了眉头,但一般来说,我会坚持使用库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}'");
写它作为:
$name = mysql_real_escape_string($name);
$id = mysql_real_escape_string($id);
$query = "SELECT * FROM table WHERE id = '$id' or name= '$name' ";
因为你开始用双引号单引号是t的一部分他查询并且$ vars被扩展。
编写PHP代码plz –