撇号不会保存在数据库中

时间:2018-10-15 16:56:24

标签: database apostrophe

我正在尝试在我的网站上进行实时聊天,到目前为止,该聊天仍然可以正常工作,但是仅当消息保存在数据库中时,才会显示一条消息,我将所有内容发布后立即保存在其中,然后将其读出给任何人。但是我无法将'保存在数据库中,如果我尝试转义字符串,它将不再保存任何内容。现在将其保存在数据库中的代码如下所示:

<?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>";
    }
}?>

1 个答案:

答案 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);