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

これはMySQLのクエリにPHP変数を取得する正しい方法ですか?MySQLのPHP変数を取得する

+2

$ family = "'OR(DROP DATABASE foo)OR" "' – gahooa

+0

私は投票/ステータスのためのトローリングについて考えましたhttp://stackoverflow.com/questions/60174/best-way-to-stop-stop-フロントページにもsql-injection-in-phpがあります。 – atxdba

答えて

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

+1

...死の願いがあると仮定します。 – gahooa

-1

次のように使用するために私の知る最良の方法から、単一引用符の不要:$ファミリは、文字列

$sql = "SELECT email FROM family WHERE family = ".$family; 
ない場合

文字列比較がある場合は、

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

いずれの場合も、サニタイズ入力を強調しても重大な危険があります。実際には、開発者はそれについて心配する必要はありませんが、単に置く?代わりにバインドされたパラメータやPDOを使用してください。 – atxdba

+0

これは彼がすでにやっていることとどう違うのですか? – Mischa

+0

SQLインジェクション!! – gahooa

0

コードは、型エラーを有する

$sqllはdefined.itは$result = mysql_query($sql)でなければなりません。

(質問はあなたがトラックをcouldntのエラーを得たので、おそらくしている、あまりにも曖昧であるため)あなたはPHP/MySQLので始まる場合は、私が

1

...これはあなたが探している理由であると考えている私は考えPDOまたはMySQLiの拡張子をチェックすることをお勧めします。これにより、よりスマートなデータベースクエリを使用して管理しやすくなります。

関連する問題