2010-11-18 2 views
2

Они оба одинаковы? Благодарю.Используются ли эти mysql_real_escape_string?

$user = $_POST['user']; 
$user = mysql_real_escape_string($user); 
$result = mysql_fetch_array(mysql_query("SELECT * FROM accounts WHERE id='$user'")); 

против

$user = $_POST['user']; 
$result = mysql_fetch_array(mysql_query(sprintf("SELECT * FROM accounts WHERE id='%s'",mysql_real_escape_string($user)))); 
+0

Почему вы используете 'sprintf' там, а не только простые строки конкатенации .... – Webnet

ответ

3

Да, это эквивалентно.

Вы можете проверить это следующим образом:

$user = $_POST['user']; 
$user = mysql_real_escape_string($user); 
echo "SELECT * FROM accounts WHERE id='$user'"; 

-vs

$user = $_POST['user']; 
echo sprintf("SELECT * FROM accounts WHERE id='%s'", mysql_real_escape_string($user)); 
1

Да они эквивалентны. Обычно, хотя, вы будете использовать sprintf, чтобы сделать код более удобным для чтения, и запрос легче изменить:

$user = $_POST['user']; 
$sql = sprintf("SELECT * FROM accounts WHERE id='%s'", 
    mysql_real_escape_string($user) 
); 
$result = mysql_fetch_array(mysql_query($sql));