3

私はここ数日、複数のテーブルからデータをフェッチする方法を理解しようと試みてきましたが、それがどのように機能するかを完全に理解したとは言えません。ともかく :)

私がやろうとしているのは、検索バーを使用して複数のテーブルに保存されている画像をフェッチして、パラメータ、つまりアーティスト名を定義することです(画像をデータベースに保存すると多くの問題が発生する可能性があることはわかっていますが、大学にとっては演習なのでできません本当にそれについて多くのことをします)

だから今具体的に。animaldata、cardata、landscapedata、peopledata、otherdataという5つのテーブルがあります。各テーブルには、次のフィールドがあります。1 id 2 Artist_name 3 details 4 photo 5 phototype and6date。ここで、artist_nameは画像をアップロードするログに記録された人物の名前であり、detailsはキャプションです。photoは保存されるblobアイテムであり、phototypeは画像の..ウェルタイプです:P

だから私がやりたいのは、誰かが検索バーを使ってアーティストを検索し、アーティストがアップロードしたすべてのテーブルからすべての画像を取得して表示するコードを検索することです。

これが1つのテーブルからデータをフェッチするために使用するコードですが、他のテーブルも検索するためにデータを変更する方法がわかりません。

それがsearch.phpです

<?php
mysql_connect ("localhost","root","")  or die (mysql_error());
mysql_select_db ("photo_album_db");

$term = $_POST['term'];

$sql = mysql_query("select * from animaldata where artist_name like '%$term%'");

while ($row = mysql_fetch_array($sql)){
    echo $row['details'];
echo "</br>";
echo "<img src=getan.php?id=".$row['id']." width=250 height=200/>";
echo "</br>";
}
?>

検索バーの形式は次のとおりです。 <form action="search.php" method="post"><input type="text" name="term" /><input type="submit" name="search" value="Search" /></form>

提案を事前に感謝します。さらに「手がかり」が必要な場合は、私に知らせてください:) :) :)

4

2 に答える 2

2

同じ列がある場合にテーブルを変更するには、次を使用します。

$sql = mysql_query("select animaldata.artist_name AS animaldata_artist_name, cardata.artist_name AS cardata_artist_name /* do this for all columns in all tables, or mor specifically for the columns you need  */ from animaldata AS a, cardata AS c, landscapedata AS l, peopledata AS p where a.artist_name like '%$term%' OR c.artist_name like '%$term%' OR l.artist_name like '%$term%' OR p.artist_name like '%$term%'");

画像を表示するためにこれを試してください:

<img src="data:image/jpeg;base64,".base64_encode($row['image_blob'])." width...

これにより、写真を個別にリクエストすることはありません。画像のコンテンツがHTMLに埋め込まれます。

この手法は、data:uriプロトコルによってサポートされています。

于 2012-05-20T10:19:46.333 に答える
2

これを試して:

// set up database connection ... 

$term = my_awesome_sanitizer($_POST['term']);

$tables = array("animaldata", "cardata", "landscapedata", "peopledata", "otherdata");
foreach ($tables as $table)
{
    $sql = mysql_query("select * from $table where artist_name like '%$term%'");
    while ($row = mysql_fetch_array($sql))
    {
        echo $row['details'];
        // show stuff ....
    }
}
于 2012-05-21T13:19:06.213 に答える