Массив байтов не будет вставлен в базу данных PostgreSQL с использованием переполнения стека PDO

Я пытаюсь вставить изображение в базу данных PostGreSQL, используя php и pdo. Вот мой код:

<?php
try{

$ndb=$_GET["db"];
$user=$_GET["login"];
$password=$_GET["pw"];
$db = new PDO("pgsql:host=localhost;dbname=$ndb", $user, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$file_name = "wallabi.jpg";
$data = file_get_contents($file_name);
$es_data = bin2hex($data);
$query = ("INSERT INTO images_preview VALUES (11, 2, 500, '2012-05-03','','', decode('{$es_data}', 'hex'))");
print_r($query);
$stmt = $db->prepare($query);
print_r($stmt->execute());
}
catch(PDOException $e)
{
echo '{"results":[{"error":'.$e.'}]}';
}
?>

Я уверен в том что :

  • Проблема не приходит из файла
  • Кодировка правильная, потому что когда я пытаюсь вставить поле непосредственно из моего интерфейса БД, он работает
  • Что-то не так с тем, как он вставляет с помощью pdo

Ошибки не возвращаются и не отлавливаются. Pdo заявляет, что вставка была сделана хорошо …
пожалуйста, помогите мне <3

0

Решение

Чтобы решить мою проблему, я использовал pgsql средства подключения вместо pdo, и это хорошо работает:

<?php
$ndb=$_GET["db"];
$user=$_GET["login"];
$password=$_GET["pw"];
$dbconn3 = pg_connect("host=localhost dbname=$ndb user=$user password=$password");
$file_name = "wallabi.jpg";
$data = file_get_contents($file_name);
$es_data = pg_escape_bytea($data);
pg_query("INSERT INTO images_preview VALUES (11, 2, 500, '2012-05-03','','', '{$es_data}')");
?>
0

Другие решения

Других решений пока нет …