数ヶ月前、私のUbuntuパッケージがPHPを7.0.8から7.0.13に自動更新しました。その時点でSQLデータベースに保存された写真を更新するスクリプトが失敗し始めました。 7.0.8を再インストールしてこの問題を回避しました。先月、私は再び7.0.15に自動更新され、スクリプトは再び失敗しました。更新後PHP PDOとラージオブジェクト(LOB)が壊れた
私のスクリプトは、PDO & FreeTDSと写真を扱うラージオブジェクト(LOB)を使用して、jpgイメージをMS-SQLデータベースに書き込みます。 PHPバージョン7.0.8までは機能していると強調しています。以下は私の問題を隔離するテストスクリプトです。
<?php
$dsn = 'dblib:dbname=photos;host=gary';
$id = 693925;
$dbh = new PDO($dsn, $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$photo = file_get_contents("coco.jpg");
$query = "UPDATE photo_table SET photo = :photo WHERE id = :id";
$stmt = $dbh->prepare($query);
$stmt->bindValue(":photo", $photo, PDO::PARAM_LOB);
$stmt->bindValue(":id", $id, PDO::PARAM_INT);
$stmt->execute();
}
}
catch (PDOException $e) {
echo $e->getMessage();
}
結果が「不正な構文」エラーです。
ラージオブジェクトとして写真を読み込むなど、データベースの作品からの読み取り、利用可能な最新のPHPバージョン7.0.15を使用してSQLSTATE[HY000]: General error:
102 Incorrect syntax near '����'.[102] (severity 15) [(null)]
。他のすべてのフィールドをデータベースに書き込んでも何の問題もなく、自分のイメージでのみ失敗します。
最後の数週間の検索にもかかわらず、同じ問題を報告している他の人がいます。
私は、コードの変更、またはLOBが再び機能するようにするいくつかの構成設定のいずれかをアドバイスした後です。
誰でもLOBを使用して、それ以降のバージョンのPHPでMS-SQLデータベースに書き込むことができたかどうかを知りたいと考えています。 – MortimerCat
これはバージョン7.0.12に入った変更の主な疑いがありますhttps://bugs.php.net/bug.php?id=72414関連する未解決のバグhttps://bugs.php.net /bug.php?id=67495 – MortimerCat