将图像插入 bytea 列显示 0 字节
Inserting image into bytea column shows 0 bytes
数据库是: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 字节。
管理员有问题。它将列报告为“0 字节”,尽管其中有数据。您可以通过在 SQL 查询 f.ex 中使用函数 octet_length() 来检查这一点:octet_length("column_name_with_bytea")。它应该报告大于 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 字节。
管理员有问题。它将列报告为“0 字节”,尽管其中有数据。您可以通过在 SQL 查询 f.ex 中使用函数 octet_length() 来检查这一点:octet_length("column_name_with_bytea")。它应该报告大于 0 的值。