2014-11-07 4 views
0

У меня есть эта SQL строка:PHP + MySQL "INSERT INTO" ошибка

$sql = "INSERT INTO foto (id, nome, check) 
      VALUES ('', '" . md5($file) . '.' .$Type. "', '" . md5($file2) . '.' .$Type2. "')"; 

но он возвращает эту ошибку:

INSERT INTO foto (nome, check) VALUES ('57f030f902b9fbd6907d1af52ec2a1ba.jpg', '8c96b1254a72dbd080a9b79a9a224865.jpg') 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'check) VALUES ('57f030f902b9fbd6907d1af52ec2a1ba.jpg', '8c96b1254a72dbd080a9' at line 1 

'

md5($file) + $Type = 57f030f902b9fbd6907d1af52ec2a1ba.jpg 
md5($file2) + $Type2 = 8c96b1254a72dbd080a9b79a9a224865.jpg 

В чем проблема? Как я могу это решить?

+0

Вы действительно должны использовать SQL-заполнители, такие как '?' Или ': nome', потому что способ, которым вы составляете эту строку запроса, кажется совершенно безрассудным. Любое из этих значений даже [правильно экранировано] (http://bobby-tablesl.com/php)? – tadman

ответ

3

check является MySQL зарезервированного слова

, которая требует его завернуть в обратных кавычках, или переименовать его в checks, например, в таблице.

$sql = "INSERT INTO foto (id, nome, `check`) 

если вы хотите переименовать его, а затем просто сделать

$sql = "INSERT INTO foto (id, nome, checks) 

, который не выдаст ошибку; опция принадлежит вам.


Обратите внимание, где начинается ошибки и указывает:

 
>...MySQL server version for the right syntax to use near 'check 
                 ^starts there 

Плюс, как только вы исправили, что ваш код будет по-прежнему открыт для SQL injection.
Использовать mysqli with prepared statements, или PDO with prepared statements, они намного безопаснее.

+0

Спасибо. «Проверить» была проблема. Я знаю, что это небезопасный запрос, но он находится в защищенной и частной области веб-сайта, на который может войти только один человек. Я, однако, когда-то закончу весь код, убедитесь, что эта область тоже. Большое спасибо. – MR10

+0

@ MR10 Вы очень желанны, * приветствия * –