Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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
Php MySQL Select语句_Php_Mysql - Fatal编程技术网

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,为什么不使用一个准备好的语句呢?我只是让它对用户来说很简单,因为准备好的语句可能会很痛苦,他们会问如何编写一个查询,我认为这是他们能力的一个相当好的基准,我想这一点很好。我只是觉得至少应该提到它,这样她就可以考虑升级到它了。谢谢你,我有一个代码可以逃避提供的数据。很好的解决方案。这是一个很棒的解决方案-它有我需要的一切。非常感谢,不客气。请喜欢您最喜欢的解决方案。这将鼓励我们回答尽可能多和尽可能相关的问题:)