以正确的方式在查询中添加变量

时间:2010-11-28 02:10:18

标签: php

为什么这样做..

$fruit_type = "banana";
mysql_real_escape_string($fruit_type);

$query = "SELECT * FROM posts WHERE fruit = " . $fruit_type . ";    

什么时候可以这样做..

$fruit_type = "banana";
mysql_real_escape_string($fruit_type);

$query = "SELECT * FROM posts WHERE fruit = $fruit_type;

我知道整数应该用单引号封装,但是添加一个直接包含字符串的变量可以吗?

4 个答案:

答案 0 :(得分:1)

通常,没有。原因就是:

$fruit_type = "; DELETE FROM posts;";

语法没有任何内在错误,这是你的方法。您希望确保转义所有用户输入字符串。

答案 1 :(得分:1)

直接添加字符串,不带引号(以及值中的转义引号),如果这是您的问题,将起作用。

以下使用整数,只要您在数字字段上匹配,但使用字符串:

$query = "SELECT * FROM posts WHERE fruit = $fruit_type";

要匹配字符串,必须将它们括在单引号内,并转义值中出现的单引号。以下内容不会转义传递的变量中包含的引号:

$query = "SELECT * FROM posts WHERE fruit = '$fruit_type'";

至少,你应该这样做:

$query = "SELECT * FROM posts WHERE fruit = " . mysql_real_escape_string($fruit_type); 

在第一时间,请阅读以下内容:

http://php.net/manual/en/pdo.prepared-statements.php

答案 2 :(得分:0)

我认为你错过了字符串的引号。

$query = "SELECT * FROM posts WHERE fruit = '$fruit_type';

此外,最好在SQL中使用绑定变量以避免数据库查询解析

答案 3 :(得分:-2)

迟到但它会帮助别人 `

$table ="table_Name";
$idx="value";
$sql="SELECT * FROM $table WHERE row_name= '$idx'";

` 执行你的查询。