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

Это правильный способ получить переменную php в запросе mysql?Mysql fetch PHP переменная

+2

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

+0

Я думал о троллинге для голосов/статуса после просмотра http://stackoverflow.com/questions/60174/best-way-to-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).

Я считаю, что это причина, вы ищете ... (так как этот вопрос является слишком расплывчатым, который, вероятно, потому, что вы получили сообщение об ошибке, что вы не могли отслеживать)

1

Если вы начиная с PHP/MySQL я бы рекомендуем вам установить PDO или MySQLi, поскольку он позволяет вам использовать более интеллектуальные запросы к базе данных и упростить их обслуживание.