Ошибок не выводит, но данные не пишет из формы таблицу БД.
Вот код:
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
);
Вот полностью рабочий пример (Протестировано)
Параметры:
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()
.
Плейсхолдеры в запросе не нужно экранировать, экранируйте только строку которую инжектите:
$sql = "INSERT INTO posts (title, content, dateAdded) VALUES (:title, :content, '$dateAdded')";
Читаем мануал.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть строка img/egor/фывыв/ Пытаюсь найти подстроку img/ регуляркой (*\/), но находит все вхождения
Всем приветНе силён в sql, но есть необходимость удалить все копии записей, кроме первой, где Name одинаковый
Есть запрос MySQL, выполняется долго, поэтому выполняю его в потокеИспользую для этого TThread