Не записываются данные из формы в таблицу БД

103
13 января 2022, 22:30

Ошибок не выводит, но данные не пишет из формы таблицу БД.

Вот код:

public function add(Post $post): void
{
$dateAdded = date('d.m.Y');
$sql = "INSERT INTO posts (title, content, dateAdded) VALUES (':title', ':content', '$dateAdded')";
    $req = $this->db->prepare($sql);
    $req->bindValue(':title', $post->getTitle(), PDO::PARAM_STR);
    $req->bindValue(':content', $post->getContent(), PDO::PARAM_STR);
    $req->execute();
}

Структура данных:

CREATE TABLE `posts` (
    `id`    INTEGER PRIMARY KEY AUTOINCREMENT,
    `title` TEXT,
    `content`   TEXT,
    `dateAdded` TEXT,
    `dateModified`  TEXT
);
Answer 1

Вот полностью рабочий пример (Протестировано)
Параметры:
YourDB заменить на имя Вашей базы
YourHost заменить на ip Вашей базы
YourName заменить на Имя пользователя mysql
YourPass заменить на Пароль пользователя mysql

$post1 = 'val1';
$post2 = 'val2';
try {
    $dbh = new PDO('mysql:dbname=YourDB;host=YourHost', 'YourName', 'YourPass');
} catch (PDOException $e) {
    die($e->getMessage());
}
$dateAdded = date('d.m.Y');
$sql = "INSERT INTO `posts` (title, content, dateAdded) VALUES (:title, :content, '$dateAdded')";
$req = $dbh->prepare($sql);
$req->bindValue(':title', $post1, PDO::PARAM_STR);
$req->bindValue(':content', $post2, PDO::PARAM_STR);
$req->execute();

Проверьте обязательно получение Ваших параметров $post->getTitle() и $post->getContent().

Answer 2

Плейсхолдеры в запросе не нужно экранировать, экранируйте только строку которую инжектите:

$sql = "INSERT INTO posts (title, content, dateAdded) VALUES (:title, :content, '$dateAdded')";

Читаем мануал.

READ ALSO
Как составить регулярное выражение для поиска подстроки (первое и последнее вхождение)?

Как составить регулярное выражение для поиска подстроки (первое и последнее вхождение)?

Есть строка img/egor/фывыв/ Пытаюсь найти подстроку img/ регуляркой (*\/), но находит все вхождения

129
Mysql удаление копий

Mysql удаление копий

Всем приветНе силён в sql, но есть необходимость удалить все копии записей, кроме первой, где Name одинаковый

144
Системе тарификации

Системе тарификации

Нужен совет по системе тарификации

82
Delphi - последний запущенный поток

Delphi - последний запущенный поток

Есть запрос MySQL, выполняется долго, поэтому выполняю его в потокеИспользую для этого TThread

91