Вставка двоичного кода в MySQL BLOB

$serv = "xxx"; $user = "xxx"; $pass = "xxx"; $db = "xxx"; $imgloc = "../images/bg.jpg"; $image = fopen($imgloc, 'rb'); $imageContent = fread($image, filesize($imgloc)); $conn = new mysqli($serv, $user, $pass, $db); $sql = "INSERT INTO `image`(`advert_id`,`img`) VALUES('1','" . $imageContent . "');"; $conn->query($sql); 

Я использую вышеуказанный код, чтобы попытаться вставить двоичный код в мою базу данных MySQL, но ничего не отправляется в базу данных. $ ImageContent просто появляется в базе данных как нуль, но если я эхо $ imageContent, он, кажется, отображает двоичные данные.

advert_id – это просто поле int, а img – BLOB

Related of "Вставка двоичного кода в MySQL BLOB"

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

 $imageContent = fread($image, filesize($imgloc)); $imageContent = mysqli_real_escape_string($conn, $imageContent); 

Вы не видите синтаксическую ошибку, похожую на:

У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «8 16 @ # 54» в строке 1 …

  • Потому что вы не проверяете наличие ошибок.

Посетите http://php.net/manual/en/mysqli.error.php и http://php.net/manual/en/function.error-reporting.php , а затем используйте следующее в верхней части файла:

 <?php error_reporting(E_ALL); ini_set('display_errors', 1); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // rest of your code 

Это приведет к синтаксическим ошибкам.


Использовать mysqli с подготовленными операторами или PDO с подготовленными операторами


Плюс, как сказал Майк Брант в комментариях, и я цитирую:

«В качестве тангенциального комментария я бы рекомендовал, чтобы у вас ДЕЙСТВИТЕЛЬНО был хороший прецедент для хранения изображений в MySQL. Во многих случаях это может быть не очень хорошая идея по сравнению с просто хранением ссылок на файлы в базе данных. "

  • Майк говорит правду. Ваша база данных со временем значительно возрастет, поэтому сохранение копии ваших файлов в папке, а затем ссылка на нее, обычно является лучшей идеей, но это полностью зависит от вас.

Прочтите следующие вопросы и ответы на стек:

  • php: Сохранить изображение в Mysql blob, хорошо или плохо?
  • Хранение изображений в DB – Yea или Nay?