Почему возникла ошибка MySQL “Incorrect date value”?

204
15 декабря 2016, 15:57

Возникла ошибка

Incorrect date value: 'Array' for column 'дата сдачи' at row 1

Вот мой код :

<form action=' ' method='post' >
<?php
include '../db.php';
{   /* выборка группы */
    $qwer =("SELECT * FROM  группа");
    $sql = mysql_query($qwer) or die(mysql_error());    
    $row = mysql_fetch_array($sql);
    echo  "<select name='group'>";
    do {
        echo "<option value=" .$row['номер групп'].">".$row['номер групп']."</option>";
    } while($row = mysql_fetch_array($sql));
    echo "</select>";
}
{   /*выборка дисциплины*/
    $qw =("SELECT * FROM  дисциплины");
    $sq = mysql_query($qw) or die(mysql_error());    
    $ro = mysql_fetch_array($sq);
    echo  "<select name='дисциплина'>"."<option >"."Выборка"."</option>";
        do   
        {
            echo "<option value=" .$ro['дисциплина'].">".$ro['дисциплина']."</option>";
    }
    while($ro = mysql_fetch_array($sq));
    echo "</select>";
}
?>
Следить за посещением лекций? 
да  <input type="radio" name='vlec' value='On'/>
нет <input type="radio" name='vlec' value='off' checked="checked"/><br>
    <input type='submit' name='redgr' >
<?php
if(isset($_POST['redgr']) && $_POST['vlec'] =='On') {
    $g=$_POST['group'];
    $d=$_POST['дисциплина'];
    echo $g,$d;
    echo "Сколько лекций
        <input type='text' name='collec' value='numberl'>
        <input type='submit' name='n' >";
    echo "";
}
if(isset($_POST['n'])) { 
    $ks=$_POST['collec'];
    echo $ks.'<br>';
    for($i=0; $i<$ks; $i++) {
        echo $i . " " . "введите дату занятия<input type='date' name='calendar[]'>
        Введите тип<input type='text' name='type[]'><br>"." введите норме<input type='text' name='name[]'><br>";
    }
    echo $ks."<input type='submit' name='dd2' />";
}
if( isset( $_POST['dd2'])) {
    $g=$_POST['group'];
    $d=$_POST['дисциплина'];
    $typew=$_POST['type'];
    $namew=$_POST['name'];
    $value=$_POST['calendar'];
    $rt=$_POST['calendar'];
    print_r ($rt) ." не работает че то<br>";
    do {    
        $adstudent = ("INSERT INTO `назначенные` (`номер группы`,`дисциплина`,`тип работы`,`имя работы`,`дата сдачи`) 
            VALUES ('$g','$d','$typew','$namew','$value')");
            $studentsql = mysql_query($adstudent) or die(mysql_error());
    } while( print_r($rt ));
    $typew=$_POST['type'];
    $namew=$_POST['name'];
    echo $typew;
}
echo '<form>';
?>
Answer 1

вы передаете массив в строку. массив в php вашей версии превращается в строчку Array. значение "Array" - это не то, что вы можете записать в поле типа date/timestamp и т.д.

ваше $value приходит из html-формы из поля name='calendar[]'(не знаю, зачем вы так запутали, почему нельзя было назвать переменную $calendar?)

php интерпретирует такие поля как массивы.

при попытке превратить массив в строку, вы получаете строчку "array" - это стандартное поведение в php5.

вот и вся разгадка. можете сделать var_dump($value); перед инсертом в базу, и все сами увидите

проверка:

php -r '$a=array(); echo $a;',

получаем предупреждение php :

PHP Notice: Array to string conversion in Command line code on line 1

вывод:

Array

P.S. (комментарий к комментарию) не вижу связи между

Вы пытаетесь добавить запись, внешний ключ которой требует существование записи в таблице 'работ'.

и сообщением

“Incorrect date value”

P.P.S.

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

P.P.P.S. никогда больше не давайте колонке в бд имя с пробелом. Это недопустимо. field_name, а не field name.

READ ALSO
Подсчет записей в запросе

Подсчет записей в запросе

Как посчитать количество записей из дополнительной таблицы?

135
Как связать 2 таблицы в MySQL?

Как связать 2 таблицы в MySQL?

Нужно связать 2 таблицы по id

195
Вывод с двух таблиц на одну страницу

Вывод с двух таблиц на одну страницу

Нужно вывести данные из разных таблиц на одну страницуПри чем из одной таблицы все благополучно выводится

142