2014-10-22 6 views
1

Я пытаюсь вставить новый столбец в поле VARCHARнельзя вставить дату в столбец

моего кода

$time = time(); 
    $ndate = date('m-y', $time); 
    echo $ndate; 
    mysqli_query($conadd,'INSERT INTO nnn (`month`) VALUES ($ndate))'; 

должен быть 10-14

, но результат - 4

Если я хочу вставить только месяц и год, как «10-14» или «10/14», как я должен это делать?

+0

у вас также отсутствует закрытие) в 'mysqli_query' – Victory

+0

Для гибкости позже было бы полезно сохранить вашу« мою »дату как« Ymd 'формат? Где вы делаете день «01» и используете год как «ГГГГ». Затем вы можете отобразить его в формате «m-y» позже. –

+0

Я видел ваше редактирование, проконсультируйтесь с моим ответом ниже. http://stackoverflow.com/a/26519706/1415724 –

ответ

2

Вы должны изменить эту строку:

mysqli_query($conadd,'INSERT INTO nnn (`month`) VALUES ($ndate))' ; 
                misplaced^^ move here 

либо: (который, кстати, последний кронштейн неуместны)

mysqli_query($conadd,'INSERT INTO nnn (`month`) VALUES ("'.$ndate.'")'); 

или

mysqli_query($conadd,"INSERT INTO nnn (`month`) VALUES ('$ndate')"); 

Используя одиночные кавычки инкапсулированные требует переменная $ndate котироваться =>"'.$ndate.'"

Хотя двойные кавычки инкапсулированные требует, чтобы быть в ЦЕННОСТЕЙ '$ndate'.

Не так, SQL интерпретирует это как математическую задачу, что означает, что дефисы интерпретируются как минусовые знаки.

I.e .: 10 минус 22 (на основе сегодняшней даты), что приводит к ошибке SQL.


Использование or die(mysqli_error($conadd)) бы сигнализировал следующую ошибку (ы):

Unknown column '$ndate' in 'field list'

Если бы кронштейн был в нужном месте:

mysqli_query($conn,'INSERT INTO nnn (`month`) VALUES ($ndate)') 
    or die(mysqli_error($conadd)); 

Используя его, и используя Опубликованная код:

mysqli_query($conadd,'INSERT INTO nnn (`month`) VALUES ($ndate))' 
    or die(mysqli_error($conadd)); 

бы сигнализировал следующее сообщение об ошибке:

Parse error: syntax error, unexpected ';' in...



"I'm trying to insert a new column to varchar field"

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

Вот несколько типов столбцов:

  • ДАТА
  • DATETIME
  • TIMESTAMP
  • ВРЕМЯ
  • ГОД

Кроме того, вы можете использовать SQL встроенный в NOW() чтобы сохранить текущее время/дату.

+0

Drive-by downvote, * симпатичный *. Не говоря уже о неуместном. –

2

формат даты MySQL является гггг-мм-дд, так что вам нужно отформатировать дату следующим образом:

$ndate = date('Y-m-d', $time); 

Добавленное заявление также должно быть изменено на:

mysqli_query($conadd,"INSERT INTO nnn (`month`) VALUES ('$ndate')"; 
+0

Что-то нужно решить. 'Y-m-d' SQL интерпретирует это как 2014 минус 10 минус 22, что приводит к ошибке SQL. –

+0

@ Fred-ii-, это PHP - '$ ndate' будет содержать строку, содержащую дату в формате YYYY-MM-DD. – danmullen

+1

Точно, и я это знаю, но заметьте дефисы? SQL интерпретирует их как минус-знаки в SQL '($ ndate)' –

1

Измените формат даты до:

date('Y-m-d', $time); 
1
$time = time(); 
$ndate = date('m-y', $time); 
echo $ndate; 
mysqli_query($conadd,'INSERT INTO nnn (`month`) VALUES ($ndate))'; 

, когда я смотрю на ваш код выше я вижу u've просто использовать текущий TME и дату, то почему бы не установить поле DATATYPE в базе данных как DateTime и поставить по умолчанию в CURRENT_TIMESTAMP. в то время как вы вставляете, вы не будете включать поле в вставку, что и он будет отлично работать

Смежные вопросы