Ввод контента в базу данных MySQL через форму - PullRequest
0 голосов
/ 27 апреля 2010

Я работал над созданием формы, которая отправляет контент в мою базу данных, но я решил, что вместо использования выпадающего меню для выбора даты я бы предпочел использовать текстовое поле. Мне было интересно, какие изменения мне нужно будет внести в мой файл создания таблицы.

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

$sql = "CREATE TABLE php_blog (
  id int(20) NOT NULL auto_increment,
  timestamp int(20) NOT NULL,
  title varchar(255) NOT NULL,
  entry longtext NOT NULL,
  PRIMARY KEY  (id)
)";

$result = mysql_query($sql) or print ("Can't create the table 'php_blog' in the database.<br />" . $sql . "<br />" . mysql_error());

mysql_close();
if ($result != false) {
    echo "Table 'php_blog' was successfully created.";
}
?>

Это временная метка, которую мне нужно отредактировать, чтобы войти через текстовое поле. Название и запись в настоящее время вводятся с помощью этого метода в любом случае.

Всякий раз, когда я использую свою форму для обновления базы данных, я получаю следующее сообщение об ошибке:

Невозможно вставить в таблицу php_blog. INSERT INTO php_blog (time_stamp, title, entry,) VALUES ('1270140960', 'kjkkj', 'jkjkjk') У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с ') VALUES (' 1270140960 ',' kjkkj ',' jkjkjk ')' в строке 1

Ответы [ 5 ]

2 голосов
/ 27 апреля 2010

TIMESTAMP - зарезервированное слово MySQL. Вам нужно будет поставить галочки вокруг него, если вы хотите использовать его в качестве имени поля. Тем не менее, я рекомендую изменить его.

Вы также должны сделать это поле DATE или DATETIME, так как именно эти данные вы в нем храните.

1 голос
/ 27 апреля 2010

Для этого вам, вероятно, следует использовать стандартный тип DATETIME MySQL. Получите содержимое текстового поля для даты и передайте его в функции PHP strtotime и date , чтобы получить его в формате, который соответствует тому, что MySQL ищет в объекте DATETIME.

1 голос
/ 27 апреля 2010

Вам не нужно ничего менять. Просто убедитесь, что вы правильно анализируете ввод от пользователя и создаете отметку времени с mktime .

1 голос
/ 27 апреля 2010

Вам не нужно вносить какие-либо изменения в эту часть вашего скрипта. Вам потребуется извлечь данные о дате ввода пользователя с помощью текстового ввода в вашей форме и преобразовать ее (если она в допустимом формате) в метку времени.

Изменить: если, конечно, вы действительно не хотите, чтобы отметка времени была датой в виде строки или формата даты, вам придется изменить int на varchar (9) (чтобы он содержал xxxx-xx-xx или любой другой формат, который вы предпочитаете) или используйте дату или дату и время

0 голосов
/ 27 апреля 2010

Если вы хотите вводить текущую метку времени в поле time_stamp каждый раз, когда вставляется строка, вы можете изменить ее определение на:

time_stamp  TIMESTAMP NOIT NULL DEFAULT CURRENT_TIMESTAMP

таким образом вам не нужно делать явную вставку для поля time_stamp.

EDIT:

Если вы хотите отредактировать поле из формы, вы можете использовать указанное выше значение поля time_stamp и включить значение time_stamp при выполнении insert. Должен быть в формате:

'YYYY-MM-DD HH:MM:SS'

Примечание: timestamp - это зарезервированное слово MySQL. Я переименовал его в time_stamp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...