【问题标题】:Byte Array won't insert into PostgreSQL database using PDO PHP字节数组不会使用 PDO PHP 插入 PostgreSQL 数据库
【发布时间】:2015-08-16 04:24:46
【问题描述】:

我正在尝试使用 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.'}]}';
}
?>

我确定:

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

没有返回或捕获错误。 pdo 状态返回插入做得很好...... 请帮助我

【问题讨论】:

  • 是什么都没有导入还是不是图片?
  • Nothing...来自php,但是当我复制查询并尝试从数据库界面插入时,它工作得很好..我错过了一些东西..
  • 对不起,我放错了。请试试这个:- $query = ("INSERT INTO images_preview VALUES (11, 2, 500, '2012-05-03','','', decode('".$es_data."', 'hex'))");
  • 不,不是引用错误。但是,当我 print_r($stmt->execute()); ,它返回1,这意味着它的好,对吧?
  • 如果在prepare 语句之后执行$stmt-&gt;errorInfo();,它会显示什么吗?

标签: php postgresql pdo bytearray


【解决方案1】:

为了解决我的问题,我使用了 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}')");
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 2014-12-06
    • 2012-11-10
    • 2012-03-28
    • 2015-10-24
    • 1970-01-01
    • 2016-09-11
    相关资源
    最近更新 更多