幾個月前,我的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();
}
結果是「錯誤的語法」錯誤!?
SQLSTATE[HY000]: General error:
102 Incorrect syntax near '����'.[102] (severity 15) [(null)]
使用最新的可用PHP版本7.0.15,從數據庫中讀取作品,包括將照片作爲大型對象讀取。將每個其他字段寫入數據庫都沒有問題,它只在我的映像上失敗。
儘管在過去的幾周裏搜索,我仍然需要找到其他人報告相同的問題。
我對任何建議,無論是更改代碼或一些配置設置,以允許LOBs再次工作。
我想知道是否有人成功使用LOBs寫入MS-SQL數據庫與更高版本的PHP。 – MortimerCat
這是進入版本7.0.12的重大變更的主要嫌疑人https://bugs.php.net/bug.php?id=72414還有一個相關的open bug https://bugs.php.net /bug.php?id=67495 – MortimerCat