为什么这样做..
$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;
我知道整数应该用单引号封装,但是添加一个直接包含字符串的变量可以吗?
答案 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);
在第一时间,请阅读以下内容:
答案 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'";
` 执行你的查询。