我正在尝试在我的网站上进行实时聊天,到目前为止,该聊天仍然可以正常工作,但是仅当消息保存在数据库中时,才会显示一条消息,我将所有内容发布后立即保存在其中,然后将其读出给任何人。但是我无法将'
保存在数据库中,如果我尝试转义字符串,它将不再保存任何内容。现在将其保存在数据库中的代码如下所示:
<?php
session_start();
$db = new PDO('mysql:host=host;dbname=dbname', 'user', 'password');
if(isset($_POST['text']) && isset($_POST['name'])){
$text = strip_tags(stripslashes($_POST["text"]));
$name = strip_tags(stripslashes($_POST['name']));
date_default_timezone_set("Europe/Berlin");
$date = date("d.m.Y; h:i:sa");
if(!empty($text) && !empty($name)){
$insert = $db->prepare("INSERT INTO chat VALUES ('','".$name."','".$text."','".$date."')");
$insert->execute();
echo "<li class = 'cm'><b>".$date." ".ucwords($name)."</b> - ".$text."</li>";
}
}?>
答案 0 :(得分:1)
我建议您在准备好的语句中使用参数。这将有助于解决潜在的SQL注入问题,并可能解决撇号问题。
以下内容:
$stat = $db->prepare("INSERT INTO chat VALUES ('',:name,:text,:date)");
$stat->bindValue(:name, $name);
$stat->bindValue(:text, $text);
$stat->bindValue(:date, $date);