【发布时间】: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->errorInfo();,它会显示什么吗?
标签: php postgresql pdo bytearray