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