Апостроф не будет сохранен в базе данных - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь установить livechat на своем веб-сайте, который до сих пор работает нормально, но поскольку сообщение отображается только в том случае, если оно сохранено в базе данных, я сохраняю все там сразу после его публикации и впоследствии зачитываю кому-либо.Но я не могу сохранить ' в базе данных, и если я пытаюсь экранировать строки, это больше ничего не сохраняет.Код для сохранения его в базе данных выглядит следующим образом:

<?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 голосов
/ 15 октября 2018

Я бы рекомендовал использовать параметры в вашем подготовленном утверждении.Это поможет с потенциальными проблемами внедрения SQL, а также может решить проблему апострофа.

Что-то вроде следующего:

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