У меня есть этот запрос;SQL Type NOW() не работает
"INSERT INTO download(download_key, ip, file, expire) VALUES ('".$text."',
'".$mysql->real_escape_string($_SERVER['REMOTE_ADDR'])."',
'".$searchQuery['file_match']."',
'NOW() + INTERVAL 10 MINUTES')"
Когда я вставляю это в базу данных, срок действия строки всегда 0000-00-00 00:00:00. Я попытался типа:
- TIMESTAMP
- ДАТА
- DATETIME
- ВРЕМЯ
Но всегда 0000-00-00 00:00:00 или 00:00:00 ,
Каков правильный тип для NOW()? I`m использованием MYSQL
Обратите внимание, что лучше избегать конкатенации строк вообще в пользу подготовленных операторов - иначе вы рискуете внедрить SQL-инъекцию (например, вы абсолютно уверены, что '$ text' и' $ searchQuery ['file_match'] 'являются безопасными?). Пожалуйста, прочитайте [этот вопрос] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) для получения дополнительной информации (в которой говорится, что '$ mysql-> real_escape_string () также устарела. –
Да, $ текст случайный, без ввода пользователем. $ searchQuery ['file_match'] отправляется из базы данных. – user2897922
_How_ был '$ searchQuery ['file_match']' помещен в базу данных? т. е. имеет ли кто-нибудь возможность добавлять случайный текст в файл? Например, строка запроса SQL? Лучше предположить, что весь текст является подозрительным (особенно из динамического источника) и использовать подготовленные операторы. Здесь вам не нужен динамический запрос (конкатенированная строка). Существует вариант использования динамических операторов, но они обычно небольшие, а «поверхность атаки» может быть ограничена даже тогда. Например, не объединяйте динамические запросы с их параметрами - подготовьте (новое) утверждение как обычно. –