0

4 つの個別のテキスト フィールドから情報を収集し、バックエンドでクエリを生成して結果を表示しようとしています。ここで既に提案されている多くの解決策を試しましたが、重複した結果が得られ続けています。私はそれを1つのクエリで動作させています:

<?php    
$query = "SELECT * FROM book WHERE booktitle LIKE '%" . mysql_real_escape_string($_POST['title']) . "%'";
$result = mysqli_query($con, $query) or die("Error in query");
while ($row = mysqli_fetch_array($result)) {
?>
<img src="<?php echo $row[12]; ?>" width="112px" height="150px" />
<?php
echo "<b>Title: </b>" . $row[1] . "<br />";
echo "<b>Author: </b>" . $row[2] . "<br />";
echo "<b>Price:</b> &pound;" . $row[9] . "<br />";
echo "<b>Description:</b> " . substr($row[3],0,320) . "...<br /><hr>";
}

しかし、どうにかして他の3つの結果も組み込む必要がありますか??

$query = "SELECT * FROM book WHERE author LIKE '%" . mysql_real_escape_string($_POST['author']) . "%'";
$query = "SELECT * FROM book WHERE isbn LIKE '%" . mysql_real_escape_string($_POST['isbn']) . "%'";
$query = "SELECT * FROM book WHERE description LIKE '%" . mysql_real_escape_string($_POST['keyword']) . "%'";

どんな助けでも大歓迎です。前もって感謝します。

4

2 に答える 2

0
<?php
$mysqli = new mysqli("localhost", "username", "password", "database_name");

$book_title = mysql_real_escape_string($_POST['title']);
$author = mysql_real_escape_string($_POST['author']);
$isbn = mysql_real_escape_string($_POST['isbn']);
$keyword = mysql_real_escape_string($_POST['keyword']);

$query = "SELECT * FROM book WHERE booktitle LIKE '%{$book_title}' OR author LIKE'%" .     $author . "%'
OR isbn LIKE '%" . $isbn . "%' OR description LIKE '%" . $keyword . "%'";
$result = $mysqli->query($query);

 while($row = $result->fetch_array()):?>
<img src="<?=$row['image_column_name']; ?>" width="112px" height="150px" />
    <b>Title:</b> <?=$row['title_column_name']; ?> <br>
    <b>Author:</b> <?=$row['author_column_name']; ?> <br>
    <b>Price:</b> <?=$row['price_column_name']; ?> <br>
    <b>Description:</b> <?=substr($row['desc_column_name'],0,320)?>
<hr>
<?php endwhile; ?>
于 2013-03-22T00:04:46.140 に答える
0

OR ステートメントと LIKE キーワードを使用して、これらすべてを同時に検索できます。

$query = "SELECT * FROM book WHERE booktitle LIKE '%" . $title . "%' OR author LIKE'%" . $author . "%' OR isbn LIKE '%" . $isbn . "%' OR description LIKE '%" . $keyword . "%';

変数が空の場合、WHERE booktitle LIKE '%%'すべての行を返す があります。入力に基づいてクエリを作成する必要があります。

// Determine the WHEREs to use
$where = array();
if ( ! empty($title))
    $where[] = "booktitle LIKE '%" . $title . "%'";
if ( ! empty($author))
    $where[] = "author LIKE '%" . $author . "%'";
if ( ! empty($isbn))
    $where[] = "isbn LIKE '%" . $isbn . "%'";
if ( ! empty($description))
    $where[] = "description LIKE '%" . $description . "%'";

// Build the query
$query = 'SELECT * FROM book';
if ( ! empty($where))
    $query .= ' WHERE ' . implode(' OR ', $where);

注: 読みやすくするために、入力のエスケープを省略しました。

于 2013-03-22T00:04:46.127 に答える