Переменная не записывается в базу данных php
Всем привет, у меня есть переменная взятая из 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>
<?
'''
Ответы (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.: Если бы сразу приложили код страницы, мы бы меньше "гадали" что там у вас за бага
