0

数据库是:POSTGRESQL

数据库驱动程序:PDO

我的查询是:

INSERT INTO
poi (
    "idPoiCategory",
    name, 
    "shortName", 
    description, 
    url, 
    source, 
    "contactPostalCode", 
    "contactCity", 
    "contactAddress", 
    "contactPhone", 
    "contactPhone2", 
    "contactMail", 
    "mediaPhotoCopyright", 
    "mediaPhotoMain", 
    "mediaPhotoMiniature1", 
    "mediaPhotoMiniature2", 
    "mediaPhotoOriginalWidth", 
    "mediaPhotoOriginalHeight", 
    "mediaPhotoMiniatureWidth", 
    "mediaPhotoMiniatureHeight", 
    "mediaPhotoCropX", 
    "mediaPhotoCropY", 
    "mediaPhotoCropWidth", 
    "mediaPhotoCropHeight" 
)
VALUES (
    :id_poi_category, 
    :name, 
    :short_name, 
    :description, 
    :url, 
    :source, 
    :postal_code, 
    :city, 
    :street_with_number, 
    :phone_number_1, 
    :phone_number_2, 
    :mailto, 
    :photos_copyright, 
    :photo_main, 
    :photo_miniature_1, 
    :photo_miniature_2, 
    :photo_original_width, 
    :photo_original_height, 
    :photo_miniature_width, 
    :photo_miniature_height, 
    :photo_crop_x, 
    :photo_crop_y, 
    :photo_crop_width, 
    :photo_crop_height 
) 
RETURNING "idPoi" 

我正在使用以下方式绑定参数(bytea):

$stmt->bindParam(':photo_main', $fields['photo_main'], PDO::PARAM_LOB);
$stmt->bindParam(':photo_miniature_1', $fields['photo_miniature_1'], PDO::PARAM_LOB);
$stmt->bindParam(':photo_miniature_2', $fields['photo_miniature_2'], PDO::PARAM_LOB);

问题是:为什么图像不插入 bytea 列?它们的(列)大小显示为 0 字节。我正在尝试插入这些图像,但列仍然显示 0 字节的大小。我试图将二进制数据转换为十六进制并将其填充到列中 - 徒劳无功,结果仍然相同:0字节。

4

1 回答 1

0

问题在于Adminer。即使您将列报告为“0字节”,其中也有数据。您可以通过在 SQL 查询 f.ex 中使用函数 octet_length() 来检查这一点:octet_length("column_name_with_bytea")。它应该报告大于 0 的值。

于 2017-06-01T11:34:38.760 回答