Я использую конкретный запрос для вставки записей. Это идет хорошо. Я даже получаю записи с выбранным запросом. Но моя проблема в том, что если запись содержит одинарные кавычки '', то она дает мне эту ошибку:
> NOTE: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 'B''' at line 1
Запрос SELECT
:
$result= mysql_query("SELECT s.name, s.sid as sid, s.category, p.name as pname FROM poet p INNER JOIN song s ON p.pid = s.pid WHERE s.name= '$sid'") or die(mysql_error());
Что мне делать, чтобы пропустить проблему с кавычками в этом. Когда я хочу, чтобы котировки вставлялись в мои записи.
Ваша проблема намного хуже, чем это – что, если кто-то вводит значение '; DROP TABLE poet; --
'; DROP TABLE poet; --
'; DROP TABLE poet; --
? Вам нужно использовать mysql_real_escape_string()
чтобы избежать значения, или использовать параметризованные запросы (например, с PDO).
Это 2011, за громкий крик. Почему SQL-инъекция все еще является широко распространенной проблемой?
Вы должны избегать данных
$sid = mysql_real_escape_string($sid);
используйте функцию http://www.php.net/manual/en/function.mysql-real-escape-string.php в вашей строке, чтобы указать «» и другие специальные символы. Другой способ предотвратить инъекцию – использовать разные подключения (логин -passwords) с разными правами на вставку и выбор. В этом случае mysql_real_escape_string wi9ll работает хорошо