Я новичок в php, да, я знаю об атаке SQL-инъекции, просто пытаюсь заставить эту работу. Все правильно отправляет в таблицу mysql, кроме даты, я продолжаю получать все нули. Почему? В поле установлено значение datetime.

include('../htconfig/dbConfig.php'); 
$dbSuccess = false;
$dbConnected = mysql_connect($db['hostname'],$db['username'],$db['password']);

if ($dbConnected) {     
    $dbSelected = mysql_select_db($db['database'],$dbConnected);
    if ($dbSelected) {
        $dbSuccess = true;
    }   
}
$Sldate = date("m-d-Y");
$data_back = json_decode(file_get_contents('php://input'));


    $userName = $data_back->{"User"};
    $password = $data_back->{"Pword"};
    $SoldTo = $data_back->{"Soldto"};
    $SoldPrice = $data_back->{"SoldPrice"};
    $SoldEmail= $data_back->{"Email"};
    $VIN = $data_back->{"VIN"};



mysql_query("UPDATE tblinventory SET SOLD ='1',DATESLD = '$Sldate', DealerName='$SoldTo', SoldPrice = '$SoldPrice', DealerEmail = '$SoldEmail' WHERE VIN =$VIN");
echo ('SOLD');

///send email

?>
0
Glenn 1 Дек 2014 в 21:17
Пожалуйста, не используйте функции mysql_* в новом коде . Они больше не поддерживаются и официально устарели. Видите красное поле ? Узнайте о подготовленных операторах взамен и используйте PDO или MySQLi - эта статья поможет вам решить, какая. Если вы выберете PDO, вот хорошее руководство.
 – 
Chris Baker
1 Дек 2014 в 21:19
Что это? $data_back->{"User"}; -- Это очень ненужный фрагмент кода. Попробуйте $data_back->User.
 – 
Chris Baker
1 Дек 2014 в 21:23
Я знаю, что часть этого кода плоха, я только начинаю с php, и на всех курсах, которые у меня есть, нет ничего по PDO, я сталкиваюсь с несколькими проблемами, когда учусь. Как только я закончу курсы, я перейду к PDO, просто пытаясь сначала пройти через это. Тем не менее, спасибо за урок, я буду использовать его очень скоро.
 – 
Glenn
2 Дек 2014 в 00:13

2 ответа

Лучший ответ

MySQL ожидает, что ваша дата будет в формате ГГГГ-ММ-ДД, а не ММ-ДД-ГГГГ.

$Sldate = date("Y-m-d");

Вы также можете удалить часть этого кода PHP и сделать это прямо в вашем SQL

DATESLD = CURDATE()
2
John Conde 1 Дек 2014 в 21:24

Причина, по которой вы получаете 00-00-00 00:00:00, заключается в том, что MYSQL не может распознать ваше datetime как действительное, поэтому он вставляет значение по умолчанию. Иногда вы также получаете 1947-08-25 19:31:00.

Ваш объект datetime должен быть правильно отформатирован. Класс PHP DateTime упрощает работу с этим, однако для его использования вам потребуется версия 5.2.

$date = new DateTime();
$Sldate = $date->format('Y-m-d');
0
EternalHour 7 Дек 2014 в 02:34