2012-01-11 96 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擴展名,因爲它允許您使用更多智能數據庫查詢並更易於維護。