撇号不会保存在数据库中

Apostrophe won't be saved in database

我正在尝试在我的网站上进行实时聊天,到目前为止运行良好,但由于消息只有在保存在数据库中时才会显示,所以我在发布后立即将所有内容保存在那里并读给任何人然后。但是我无法在数据库中保存 ' ,如果我尝试转义字符串,它不会再保存任何内容。将其保存在数据库中的代码现在如下所示:

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

我建议您在准备好的语句中使用参数。它将有助于解决潜在的 SQL 注入问题,并可能解决撇号问题。

大致如下:

$stat = $db->prepare("INSERT INTO chat VALUES ('',:name,:text,:date)");
$stat->bindValue(:name, $name);
$stat->bindValue(:text, $text);
$stat->bindValue(:date, $date);