2012-03-06 3 views
0

У меня есть следующий запрос:
SELECT * FROM ships WHERE shipCode="SP"
SELECT * FROM ships WHERE shipCode=\"SP\"Проблема с mysql_real_escape_string

Первые работы отлично, второй, который является результатом вызова mysql_real_escape_string на первой строке, не работает и дает бесполезную ошибку сообщение #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\"SP\"' at line 1

Что в этом плохого?

shipCode является VARCHAR (2)

+1

Опубликуйте свой код PHP. MySQL может принимать одиночные кавычки, в зависимости от того, как он настроен, но одинарные кавычки являются стандартными SQL. –

+0

Вам больше не следует использовать функции mysql_ *. Вместо этого используйте класс mysqli или Pdo. –

ответ

4

Вы не должны называть mysql_real_escape_string на весь строки. Вы используете его только в значениях , которые вы связываете с вашим запросом.

Неправильно:

$query = 'SELECT * FROM ships WHERE shipCode="' . $var . '"'; 
$query = mysql_real_escape_string($query); 

Справа:

$query = 'SELECT * FROM ships WHERE shipCode="' . mysql_real_escape_string($var) . '"'; 

Еще лучше: Prepared statements.

0

вам необходимо иметь действительное соединение с MySQL создана, прежде чем использовать mysql_real_escape строку. сделайте это так

$attr="sp"; 
Select * from ships where shipcode = '" . mysql_real_escape_string($attr) . "'; 
Смежные вопросы