Byte Array不会使用PDO PHP插入到PostgreSQL数据库中

时间:2015-06-02 11:38:24

标签: php postgresql pdo bytearray

我试图使用php和pdo将图片插入PostGreSQL数据库。这是我的代码:

<?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.'}]}';
}
?>

我确定:

  • 问题不是来自文件
  • 编码是正确的,因为当我尝试直接从我的db接口插入字段时,它可以正常工作
  • 使用pdo
  • 插入的方式有问题

不会返回或捕获错误。 pdo状态返回插入很好... 请帮帮我&lt; 3

1 个答案:

答案 0 :(得分: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}')");
?>