Вообщем история такая:
Использую на сайте скрипт проверки выгружаемых файлов по md5. Код:
$md5_hash = md5_file($_FILES["fail"]["tmp_name"], $raw_output = true);
$res_double = $db->query('SELECT * FROM `download__files` WHERE `md5hash`="' . $md5_hash . '"')->fetch();
$res_double2 = $db->query('SELECT * FROM `download__more` WHERE `md5hash`="' . $md5_hash . '"')->fetch();
Но иногда попадаются файлы, которые из-за $raw_output = true в хэш выдают спецчимволы, и скрипт вылетает с ошибкой SQL:
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 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 '?J!"' at line 1 in /srv/disk2/2498365/www/oldfag.cf/downloads/includes/files_upload.php:102 Stack trace: #0 /srv/disk2/2498365/www/oldfag.cf/downloads/includes/files_upload.php(102): PDO->query('SELECT * FROM `...') #1 /srv/disk2/2498365/www/oldfag.cf/downloads/index.php(141): require_once('/srv/disk2/2498...') #2 {main} thrown in /srv/disk2/2498365/www/oldfag.cf/downloads/includes/files_upload.php on line 102
В интернетах советуют использовать подготовленные запросы и биндить параметры, но я чайник.
Помогите пожалуйста написать правильный код :)
UPD 1:
Вообщем как не пробовал - всегда проблема именно в том, что в RAW $md5_hash есть двойные кавычки, они то и портят весь скрипт.
Надо бы как-то абстрагировать значение в переменную... хотя я не силен в РНР.
Но другие же как-то работают с md5?