Я пытаюсь вставить значение в мою таблицу sql, в которой есть html: вроде
<?
$story ="<div class='post'><p class='date'>$mont<b>$day</b></p><h2 class='title'>lkjljt</h2><p class='meta'><small>Posted $name | $school, $date | Rating</small></p><div class='entry'>$message</div></div>";
$db = mysql_connect("host", "user", "password");
mysql_select_db("db", $db);
if (!$db)
{
die('Could not connect: ' . mysql_error());
}
$sql = "INSERT INTO Post VALUES ('', '$date', '$time', '$story', '$school','$location', '$sex', '$zipcode', '$name');";
$result = mysql_query($sql);
if($result)
{ $success = " Your hookup has been submitted ";}
else{
$error = "something went horribly wrong" . mysql_error();}
?>
Я продолжаю получать синтаксическую ошибку, когда я отправляю эту страницу, и если я комментирую $story out, запрос выполняется нормально. Как я могу это исправить?
Наиболее вероятная причина состоит в том, что $story содержит одинарные кавычки, которые разбивают запрос. Защитите его, используя mysql_real_escape_string
В общем, это идея bad, поскольку она открыта для SQL-инъекции.
$sql = "INSERT INTO Post VALUES ('', '$date', '$time', '$story',
'$school','$location', '$sex', '$zipcode', '$name');";
По крайней мере, используйте mysql_real_escape_string, который защитит ввод символов, имеющих особое значение в запросе MySQL. Используйте его во всех текстовых столбцах.
$sql = "INSERT INTO Post VALUES ('', '$date', '$time', '" .
mysql_real_escape_string($story) . "','".
mysql_real_escape_string($school) . "','".
mysql_real_escape_string($location) . "', '$sex', '$zipcode', '" .
mysql_real_escape_string($name) ."');";
Если вы не заботились о SQL Injection (хотя я не знаю, почему бы вам не понравилось), вы также можете использовать htmlspecialchars, чтобы исправить вашу проблему. mysql_real_escape_string, очевидно, лучший выбор, хотя, как сказал @cyberkiwi