2012-01-11 53 views
-2
$sql = "SELECT email FROM family WHERE family = '$family'"; 
       $result = mysql_query($sqll)or die(mysql_error()); 

这是正确的方式来获取php变量到MySQL查询?Mysql取PHP变量

+2

'$ family =“'OR(DROP DATABASE foo)OR'”' – gahooa 2012-01-11 05:03:50

+0

我想过在看到http://stackoverflow.com/questions/60174/best-way-to-stop-首页上的sql-injection-in-php也是如此。 – atxdba 2012-01-11 05:09:43

回答

1

这可以工作。但是,它很容易受到SQL injection的影响。

这是更安全:

$sql = sprintf("SELECT email FROM family WHERE family = '%s'", 
       mysql_real_escape_string($family)); 
$result = mysql_query($sql); 
-2

'$family'无需单引号这里

+0

是的,有...(假设'$ family'是一个字符串) – Mischa 2012-01-11 05:06:45

+1

...并假设是一个死亡愿望。 – gahooa 2012-01-11 05:21:45

-1

从我的知识最好的方式来使用这样的:

如果$家庭不是字符串

$sql = "SELECT email FROM family WHERE family = ".$family; 

如果有字符串比较,那么,

$sql = "SELECT email FROM family WHERE family = '".$family."'"; 
+0

这两种情况都严重危险,没有强调消毒输入。真的,虽然开发人员不应该担心这个问题,但只需要一个?在它的位置并使用绑定参数或PDO来代替。 – atxdba 2012-01-11 05:20:31

+0

这与他已经在做什么不同? – Mischa 2012-01-11 05:22:11

+0

SQL注入! – gahooa 2012-01-11 05:22:13

0

的代码有一个类型错误

$sqll不是defined.it必须$result = mysql_query($sql)

我相信这是你要找的......(因为这个问题太含糊这可能是因为你有你不可能跟踪误差),如果你使用PHP/MySQL的我就开始

1

的原因建议您检查PDOMySQLi扩展名,因为它允许您使用更多智能数据库查询并更易于维护。