Почему не работает этот код PHP? Хотя работать должно...

интернет компьютеры программирование php скрипт

Есть таблица post в базе данных и 5 полей: id, title, text_f, data_c, author.

Есть код:

<?php
mysql_connect ('localhost', 'root', 'pass');
mysql_select_db ('news_l');
$title = "Заголовок";
$author = "Автор";
$text_f = "Текст";
$data_c = date('d m y H i');

$result = mysql_query ('INSERT INTO post VALUES (0, "'.$title.'", "'.$text_f.'", "'.$data_c.'", "'.$author.'")');

if ($result == 'true')
{
echo "<p>Запись добавлена.</p>";
}

else

{
echo "<p>Запись добавить не удалось.</p>";
}
?>

Он не работает. Почему?

Если заместо переменных добавить просто текст, то все отлично добавляется:

<?php
mysql_connect ('localhost', 'root', 'pass');
mysql_select_db ('news_l');

$result = mysql_query ('INSERT INTO post VALUES (0, "Text", "Text", "Text", "Text")');

if ($result == 'true')
{
echo "<p>Запись добавлена.</p>";
}

else

{
echo "<p>Запись добавить не удалось.</p>";
}
?>

Почему этот второй код работает, а первый нет?

Примечание:
Vindicar
1. Спасибо исправлюсь.
2. Mysql_error() выводит "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 '00:20, "Автор")' at line 1".
3. Autoincremen у id задан.
4.
id - INT (11).
Title - VARCHAR ( 255 ).
Text_f - Text.
Data_c - VARCHAR (255).
Author - VARCHAR (255).

P. S. С PHP знаком всего полторы недели.

Примечание:
Wowan1.
Выдает все как и должно быть: "INSERT INTO post VALUES (0, "Заголовок", "Текст", "07-10-09 00:28", "Автор")"

Примечание:
Vindicar спасибо за помощь.
echo $query; Выдает: INSERT INTO post VALUES (0, 'Заголовок', 'Текст', '07-10-09 00:42', 'Автор')

Mysql_error(): Incorrect string value: '\xC7\xE0\xE3\xEE\xEB\xEE...' for column 'title' at row 1

Прогонять через mysql_escape_string() не вижу смысла экранировать нечего, хотя можно
попробовать.
Ответы:
Навскидку не скажу, но укажу на несколько ошибок:
1. if ($result == 'true') - абсолютно неверно, должно быть if ($result == true) или просто if ($result)
2. Не вижу вывода текста ошибки, а ведь есть такая вещь как mysql_error(). Напиши, какое сообщение об ошибке возвращает MySQL в первом случае.
3. ты явно указываешь id. Зачем? Обычно его не указывают, но задают Autoincrement.
4. Структуру таблицы поподробнее. Какой тип поля, есть ли индексы?
Выведи в эхо вот эту строку
'INSERT INTO post VALUES (0, "'.$title.'", "'.$text_f.'", "'.$data_c.'", "'.$author.'")'
У тебя очень сложно строится строка. попробуй упростить её с помощью прямого включения переменных:
$query = "INSERT INTO post VALUES (0, '$title', '$text_f', '$data_c', '$author')"
$result = mysql_query ($query);
Выведи $query командой echo, чтобы проверить правильность итогового запроса.
Еще можно прогнать все вставляемые строки через mysql_escape_string()
Имхо так лучше
"INSERT INTO post VALUES (0, '".$title."', '".$text_f."', '".$data_c."', '".$author."')"
афтор и как так получается та ...
... $data_c = date('d m y H i'); ...
и тут же:
... Выдает все как и должно быть: "INSERT INTO post VALUES (0, "Заголовок", "Текст", >>>>!!!!"07-10-09 00:28"!!!!<<<<, "Автор")"  ...
>PHP знаком всего полторы недели.
>Прогонять через mysql_escape_string() не вижу смысла
О. Полку ламеров прибыло
после mysql_select_db пишешь
mysql_query("SET NAMES cp1251");


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.