0

私はPHPから始めたばかりで、演習の一環として、画像をアップロードしてからアップロードされたすべての画像を表示できる小さなWebサイトを設計したいと思いました。

画像のアップロードは正常に機能し、画像はデータベースに保存されていますが、他のデータと一緒に画像をテーブルに表示する方法が見つかりません

$i=0;
while ($row = mysql_fetch_array($result))
{
echo '<td>'.mysql_result($result,$i,0).'</td>';
echo '<td>'.mysql_result($result,$i,1).'</td>';
echo '<td>'.mysql_result($result,$i,2).'</td>';
echo '<td>'.mysql_result($result,$i,3).'</td>';
echo '<td>'.base64_encode($result,$i,4).'</td>';
echo '<tr>';
$i++;

画像が表示されるようにコードを変更するにはどうすればよいですか?

これは画像をアップロードするために使用されるコードです

    if (isset($_FILES['photo']))
    {
        @list(, , $imtype, ) = getimagesize($_FILES['photo']['tmp_name']);
        // Get image type.
        // We use @ to omit errors

        if ($imtype == 3) // cheking image type
            $ext="png";   // to use it later in HTTP headers
        elseif ($imtype == 2)
            $ext="jpeg";
        elseif ($imtype == 1)
            $ext="gif";
        else
            $msg = 'Error: unknown file format';

        if (!isset($msg)) // If there was no error
        {
            $data = file_get_contents($_FILES['photo']['tmp_name']);
            $data = mysql_real_escape_string($data);
            // Preparing data to be used in MySQL query

            mysql_query("INSERT INTO {$table}
                            SET ext='$ext', title='$title',
                                data='$data'");

ここでテストします。ここにリンクの説明を入力します

Stack Overflowの例を見ていましたが、データがテーブルに出力されたループを含むものは見つかりませんでした。

4

1 に答える 1

0

PHPから始めるので、右足から始める必要があります:)

  • mysql_*関数は使用しないでください。これらは非推奨です。代わりに、mysqli_*またはPDOを使用してください

  • DBに画像を保存することは「悪い考え」です。ファイルをファイルシステム(別名HD)に保存し、名前をDBのフィールドに参照することをお勧めします。

  • mysql_fetch_arrayの代わりに、mysql_fetch_assocを試して、フィールドを名前で呼び出すことができるようにしてください。すなわち:$ row ['db_field_name'];

問題については、保存された画像を表示するための追加のスクリプトが必要になります。このようなもの:

<?php
...
$row = mysql_fetch_assoc($result);
header("Content-type: image/jpeg"); //Set the correct image type.
echo $row['data'];
exit;
?>

そしてあなたのディスプレイhtmlで:

...
<img src="yourscript.php?image=XX" ...>
...

この助けを願っています:)

于 2013-03-07T15:55:28.320 に答える