Я начал изучать и PHP, и ASP.NET, пока что у меня в голове каша..
ОС: Ubuntu 18.04
Сервер: Server version: Apache/2.4.29 (Ubuntu)/
Server built: 2018-10-10T18:59:25
PHP: PHP 7.2.15-0ubuntu0.18.04.1
MySQL: mysql Ver 14.14 Distrib 5.7.25
phpmyadmin: 4.8.5
Содержание index.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<? require "add.php";?>
</body>
</html>
А внутри add.php расположен след. код:
<form action="controller.php" method="post">
<input type="text" name="theme"><br/><br/>
<textarea name="text" cols="60" rows="13" placeholder="Введите текст статьи"></textarea><br/><br/>
<button type="submit" >addDB</button>
</form>
А внутри controller.php расположен следующий код:
<?php
$pdo = new PDO("mysql:host = localhost; dbname = input_db", "root", "123");
$sql = ("INSERT INTO tables (theme, text) VALUES (:theme, :text)");
$statment = $pdo->prepare($sql);
$statment -> bindParam(":theme", $_POST['theme']);
$statment -> bindParam(":text", $_POST['text']);
$statment -> execute();
Вроде всё кажется правильным, но почему-то в базу не добавляет введенные данныею
И еще как сделать так, чтоб при нажатии, на кнопку AddDB и отправил запрос,и потом возвращался на главную страницу?
Это очень хорошй и важный вопрос.
Но ответ на него не совсем очевидный. И звучит он так: "Надо правильно соединяться с PDO".
Вообще, тема "что делать, если код не работает" довольно обширная, но самое первое, что надо делать в таком случае - это попросить РНР сообрщать обо всех ошибках, которые произошли в скрипте. А в данном случае - попросить ПДО сообщать об ошибке, произошедшей при выполнении запроса. И вот как раз для этого и надо правильно соединяться: Как правильно соединяться с Mysql в PDO. помимо других важных настроек мы таже сконфигурируем правильный режим выброса ошибок для PDO.
После этого PDO начнет нам говорить, в чем у нас проблема! Надо только убедиться, что PHP в принципе настроен так, чтобы сообщать об ошибках.
<?php
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$dsn = "mysql:host=localhost;dbname=input_db;charset=utf8mb4";
try {
$pdo = new PDO($dsn, "root", "123", $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
$sql = "INSERT INTO tables (theme, text) VALUES (:theme, :text)";
$statment = $pdo->prepare($sql);
$statment -> bindParam(":theme", $_POST['theme']);
$statment -> bindParam(":text", $_POST['text']);
$statment -> execute();
Скорее всего PDO сообщит о том, что не найдена база данных или хост. Поскольку никаких украшений (включая пробелы) в DSN быть не должно. Но конкретная ошибка в данном случае не важна, поскольку ошибки всегда разные, и на все случаи все равно ответить невозможно. Но это и не нужно - надо просто прочитать сообщение об ошибке, и исправить её.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Если изначально std::weak_ptr указывал на нулевой указатель std::shared_ptr:
Можно ли как то прочитать датаграмму из сокета по частям? Работаю с qudpsocketГрубо говоря мне нужно пустить сокет через цепочку обработчиков,...
Делаю простейшие задачиПроблема в том, что я пока не знаю, как сделать множественный цикл (т