Varbinary MaxフィールドとしてSql Server 2016に格納されたPhp PDOを使用して画像が表示されない理由を解明しようとしています。私はPHP 7を使用し、これはPHP 5で同じコードを使用していますが、MySqlを使用しています。代わりにSQL Serverに移動したい。Varbinary Maxを使用してPHP PDOを使用してSql Serverから画像を表示できません
私はそれを表示すると、壊れたイメージが表示されますが、ソースコードにはイメージデータが表示されます。これはbase64を使用してコード化されており、whileループを使用してレコードを取得します。私のコードは以下の通りです。
正常に動作し、データベースの画像を見ることができる挿入物。私はimgタグで、なぜこのdoesntの仕事を得ることはありません
$sql = "SELECT TOP (2) id, filedate, imgfile, text, adddatetime, CONCAT(ROUND(DATALENGTH(imgfile)/1024, 1), 'k') as size
FROM weather_stories
ORDER BY adddatetime DESC";
// use exec() because no results are returned
$preparedStatement = $conn->prepare($sql);
$preparedStatement->execute();
//retrieve records
while ($row = $preparedStatement->fetch()) {
//create table
echo "<tr>";
echo "<td>" . $row['filedate'] . "</td>";
echo "<td>" . $row['text'] . "</td>";
echo "<td>" . $row['adddatetime'] . "</td>";
echo "<td>" . $row['size'] . "</td>";
echo "</tr>";
echo "<tr>";
echo "<td><a href='viewws.php?id=" . $row['id'] . "'>";
echo "<img width='300' height='300' src='data:image/png;base64," . base64_encode($row['imgfile']) . "' />";
echo "</a></td>";
echo "<td><a href='#' id=" . $row['id'] . " class='deletews'>Delete</a></td>";
echo "</tr>";
}
:画像の表示
$sql1 = "INSERT INTO weather_stories (filedate, text, imgfile)
VALUES (:filedate, :text, :imgfile)";
$preparedStatement = $conn->prepare($sql1);
$preparedStatement->bindParam(':filedate', $_POST['filedate']);
$preparedStatement->bindParam(':text', $_POST['text']);
$preparedStatement->bindParam(':imgfile', $output, PDO::PARAM_LOB, 0, PDO::SQLSRV_ENCODING_BINARY);
$preparedStatement->execute();
。表示されるのは壊れた画像アイコンですが、ページのソースコードを見ると、画像内のdata:タグの後のデータが表示されます。
私はここにもこれに対する解決策を見てきましたが、何も機能しません。私はそれが多分フェッチと疑うが、なぜか分からない、これについてのWeb上の限られたドキュメントがあるので。
助けていただければ幸いです。ありがとう!
ステップ1では、1つのレコードを選択し、バイナリイメージデータをページに直接出力して、有効なイメージであるかどうかを確認します。コンテンツタイプを設定するには、 'header()'を適切に呼び出します。 – miken32
また知っておく価値があります:https://msdn.microsoft.com/en-us/library/bb522494.aspx – miken32