Не добавляет в базу данных

NIREEE46

Опытный
Дней с нами
3.837
Розыгрыши
0
Сообщения
210
Репутация
12
Реакции
70
Добрый день. Php изучаю совсем недавно и вот столкнулся с проблемой. Не могу добавить данные в базу данных mysql при помощи формы. Может кто найдет ошибку, буду очень благодарен.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Добавление пользователя</title>
</head>

<body>
<form method="post" action="add.php">
Название новости<br/>
<input type="text" name="title"/><br/>
Текст новости<br/>
<textarea cols="40" rows="10" name="text"></textarea><br/>
Автор новости<br/>
<input type="text" name="author"><br/>
<input type="hidden" name="date" value="<?php echo date('Y-m-d');?>"/>
<input type="hidden" name="time" value="<?php echo date('H:i:s');?>"/>
<input type="submit" name="add" value="Добавить"/>

</form>
<?php
$con = mysqli_connect("localhost", "root", "root", "123")//параметры в скобках ("хост", "имя пользователя", "пароль")
or die("<p>Ошибка подключения к базе данных! " . mysqli_connect_error() . "</p>");

$db = mysqli_select_db($con,"123")//параметр в скобках ("имя базы, с которой соединяемся")
or die("<p>Ошибка выбора базы данных! ". exit(mysqli_connect_error()) . "</p>");
mysqli_query($con, "SET NAMES 'utf9' "); // mysql_set_charset("utf9");

if (isset($_POST['add']))
{
$title = $_POST['title'];

$author = trim($_POST['author']);
$date = $_POST['date'];
$time = $_POST['time'];

$sql = "INSERT INTO news(title, date, time, author) VALUES ('$title','$date','$time','$author')";
mysqli_query($con, $sql);
mysqli_close($con);
echo "Новость успешно добавлена";
}
?>

</body>
</html>
 


Текст новости<br/>
Разве сначала не надо <br> ?
 
Текст новости<br/>
Разве сначала не надо <br> ?
тэг </br> служит для переноса на следующую строку, вроде можно и просто <br>. Он написан правильно и не влияет на работу
 
проверь данные
 
тэг </br> служит для переноса на следующую строку, вроде можно и просто <br>. Он написан правильно и не влияет на работу
да, можно просто <br> юзать

По поводу кода:
1. Я всегда пишу запрос так: INSERT INTO news(title, date, time, author) VALUES ('". $title ."','". $date ."','". $time ."','". $author ."')
- Временами php попросту не принимает параметры иначе - не знаю, в чем проблема и отчасти это костыль, но все же советую попробовать.
2. Подключение к базе данных точно проходит? Банально, но малоли
3. POST-запросы очень часто на локальных серверах вроде денвера почему-то не проходят, попробуй GET использовать для теста.
4. Вот тебе пример кода для работы с MySQL

/* База данных */
$mysqli = mysqli_connect( 'localhost', /* Хост, к которому мы подключаемся */
'root', /* Имя пользователя */
'root', /* Используемый пароль */
'db'); /* База данных для запросов по умолчанию */


$mysqli->query("INSERT INTO news(title, date, time, author) VALUES ('$title','$date','$time','$author')");
 
да, можно просто <br> юзать

По поводу кода:
1. Я всегда пишу запрос так: INSERT INTO news(title, date, time, author) VALUES ('". $title ."','". $date ."','". $time ."','". $author ."')
- Временами php попросту не принимает параметры иначе - не знаю, в чем проблема и отчасти это костыль, но все же советую попробовать.
2. Подключение к базе данных точно проходит? Банально, но малоли
3. POST-запросы очень часто на локальных серверах вроде денвера почему-то не проходят, попробуй GET использовать для теста.
4. Вот тебе пример кода для работы с MySQL

/* База данных */
$mysqli = mysqli_connect( 'localhost', /* Хост, к которому мы подключаемся */
'root', /* Имя пользователя */
'root', /* Используемый пароль */
'db'); /* База данных для запросов по умолчанию */

$mysqli->query("INSERT INTO news(title, date, time, author) VALUES ('$title','$date','$time','$author')");
Спасибо тебе за обширный совет. Подключение к базе данных происходит, так как я пробовал из готовой базы показывать запросы командами SELECT идт. это работает. Может важно, но у меня апач. Сейсас попробую твой совет.
P.S. пропробовал по твоему, все также, ошибок опять же нет
 
Последнее редактирование:
Спасибо тебе за обширный совет. Подключение к базе данных происходит, так как я пробовал из готовой базы показывать запросы командами SELECT идт. это работает. Может важно, но у меня апач. Сейсас попробую твой совет.
P.S. пропробовал по твоему, все также, ошибок опять же нет
SELECT запросы проходят значит?
Структуру таблицы покажи, аля sql-файл
Возможно, конфликт типов данных
 
SELECT запросы проходят значит?
Структуру таблицы покажи, аля sql-файл
Возможно, конфликт типов данных
-- phpMyAdmin SQL Dump
-- version 4.5.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Ноя 05 2015 г., 19:53
-- Версия сервера: 5.7.9-log
-- Версия PHP: 5.6.15

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- База данных: `123`
--

-- --------------------------------------------------------

--
-- Структура таблицы `news`
--

CREATE TABLE `news` (
`id` int(10) UNSIGNED NOT NULL,
`title` varchar(255) NOT NULL,
`text` text NOT NULL,
`date` date NOT NULL,
`time` text NOT NULL,
`author` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `news`
--

INSERT INTO `news` (`id`, `title`, `text`, `date`, `time`, `author`) VALUES
(1, 'Название новости 1', 'фывфывфывфывпавп в', '2015-11-05', '', 'выавыа'),
(2, 'названиеновости', 'ыфвпарпывп', '2015-11-05', '', 'апвыпвып'),
(3, 'названиеновости', 'ыфвпарпывп', '2015-11-05', '', 'апвыпвып');

--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `news`
--
ALTER TABLE `news`
ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT для сохранённых таблиц
--

--
-- AUTO_INCREMENT для таблицы `news`
--
ALTER TABLE `news`
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 
Кидай код в тег [*code]
Глаза режет
 
Вот оно что - у тебя у каждой новости свой уникальный ID генерирует MySQL, а в запросе его нету.
$mysqli->query("INSERT INTO news(id, title, date, time, author) VALUES ('', '$title','$date','$time','$author')");
 
Ахда, так же:
Код:
CREATE TABLE `news` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`text` text NOT NULL,
`date` date NOT NULL,
`time` text NOT NULL,
`author` varchar(50) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
 
Ахда, так же:
Код:
CREATE TABLE `news` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`text` text NOT NULL,
`date` date NOT NULL,
`time` text NOT NULL,
`author` varchar(50) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
все сделал как ти сказал, но вылетакет такая ошибка при попытке добавить в базу:
Код:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? text) VALUES ('','fdg','2015-11-05','20:11:18','dfg', 'text')' at line 1
 
все сделал как ти сказал, но вылетакет такая ошибка при попытке добавить в базу:
Код:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? text) VALUES ('','fdg','2015-11-05','20:11:18','dfg', 'text')' at line 1
Про text то забыли
Код:
$text = $_POST['text'];

$mysqli->query("INSERT INTO news(id, title, text, date, time, author) VALUES ('', '$title', '$text', '$date','$time','$author')");
 
Про text то забыли
Код:
$text = $_POST['text'];

$mysqli->query("INSERT INTO news(id, title, text, date, time, author) VALUES ('', '$title', '$text', '$date','$time','$author')");
я это добавил, теперь что то надо сделать с id. Пишет ошибку
Incorrect integer value: '' for column 'id' at row 1