1

Всем привет, у меня есть переменная взятая из url, и она не записывается в базу данных, но если её просмотреть через var_dump, то вся информация есть, также если её вывести через echo то всё выводится, но столбец базы данных, в которого записывают переменную, пустой. Помогите пожалуйста. Вот код:

'''
<script
  src="https://code.jquery.com/jquery-3.6.0.min.js"
  integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
  crossorigin="anonymous"></script>
<?php
    include 'index.html';
    include 'rb.php';
    $connect = new PDO("mysql:host=localhost; dbname=u1724412_default; charset=UTF8", '*', '*');
    if (isset($_POST['comment'])){
        $comment = $_POST['comment'];
        $username = $_GET['username'];
        $date = date('H:i:s');
        $query = $connect->query("INSERT INTO u1724412_default.comments (username, comment, data) VALUES ('$username', '$comment', '$date')");
    }
    echo gettype($username);
    var_dump($username);
?>

<? $comments = $connect->query("SELECT * FROM *.comments ORDER BY data DESC"); $comments = $comments->fetchAll(PDO::FETCH_ASSOC); ?> <div class="scroll-block"></div> <? if ($comments){ foreach($comments as $comment){ ?> <div class="wrapper"> <div class="block"> <div class="username"><?=$comment['username']?></div> <br> <div class="comment"><?=$comment['comment']?></div> <div class="data"><?=$comment['data']?></div> </div> </div> <? '''

Al Dv
  • 27

1 Answers1

1

Посмотрите логи веб сервера.

Возможно у вас проблемы на этапе обращения к БД. И тогда в логах ошибок вы это увидите.

Так же можно посоветовать проверить настройки подключения через PDO.

Подключиться и прочитать то что есть в БД получается?

Возможно не соответствует тип даты в php и в БД, а т.к. вы не обрабатываете в коде ошибки БД, то смотреть опять же лог ошибок. Можно проверить запись комментария без даты.

Так же PDO хорош "подготовленными (prepared)" выражениями. В текущем виде реализация закладывает в код уязвимость типа SQL-injection. Если код не учебный а боевой - рекомендую проработать этот аспект.

p.s. Кстати, можно вывод ошибок в php настроить (как вам советовал коллега выше), например добавив в шапку php файла

<?php 
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
?>

UP:

вы используете jquery ajax, и отправляете комментарий и имя пользователя методом POST, а в бэкэнд части, имя пользователя берёте из массива $_GET. Это сработало бы, если бы вы указали например

 <form action="/index.php?username=Vasya" method="POST"> 

и отправляли бы через submit, в текущем варианте можно попробовать изменить строчку в ajax

url: "index.php",

на

url: "index.php?username="+username,

И раскомментировать инпут для имени пользователя

Вот только не уверен что это хорошая практика.

p.s.: Если бы сразу приложили код страницы, мы бы меньше "гадали" что там у вас за бага

ScreenShot

Полезная информация здесь