我试图在其中具有html的sql表中插入一个值:如下所示
<?
$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注释掉,则查询运行正常。我怎样才能解决这个问题?
最佳答案
最可能的原因是$ story包含单引号,这将中断查询。
使用mysql_real_escape_string保护它
通常,这是个坏主意,因为它可以进行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) ."');";
关于php - 在sql表中插入html,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4709328/