MySQL Select语句

时间:2011-09-13 13:42:40

标签: php mysql

我有2个值,我正在提供我的脚本 - 我想搜索这些数据中的任何一个。如何编写我的查询:

SELECT * FROM table WHERE id = '".$id."' or "name='".$name."';

我的问题是转发查询中的引号。

任何帮助将不胜感激。

5 个答案:

答案 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以获得更好的效果。