首页 > 解决方案 > 通过php代码对sql数据库进行多次搜索

问题描述

我有一些用于搜索电影数据库的代码。我需要搜索标题、流派、年份、评级等。如果一次只是其中一个,这很好,另一个要求是能够一次搜索多个搜索。例如,流派 + 评级,产生特定于该搜索的结果。

我的问题是我想不出如何有效地编码。任何帮助都会很棒。

<?php
$connection = mysqli_connect("localhost", "root", "", "movies");

if(!$connection){
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

printf("Host information: %s\n", mysqli_get_host_info($connection));

/*$file = "MoviesCSV.csv";
$file_open = fopen($file,"r");
while(($csv = fgetcsv($file_open, 1000000, ",")) !== false)
{
    $title = $csv[0];
    $studio = $csv[1];
    $status = $csv[2];
    $sound = $csv[3];
    $version = $csv[4];
    $retPrice = $csv[5];
    $rating = $csv[6];
    $year = $csv[7];
    $genre = $csv[8];
    $aspect = $csv[9];

    $sql = "INSERT INTO movies
            (Title, Studio, Status, Sound, Versions, RecRetPrice, Rating, Year, Genre, Aspect)
            values 
            ('$title', '$studio', '$status', '$sound', '$version', '$retPrice', '$rating', '$year', '$genre', '$aspect')";

        if(mysqli_query($connection, $sql) === true) {
            echo("Successfully inserted into database. <br/>\n");
        }else{
            printf(mysqli_error($connection));
        }

}*/
//mysqli_close($connection);
?>

<form action="test.php" method="post">
    Title: <input type="text" name="title"/><br/>
    Genre: <input type="text" name="genre"/><br/>
    Rating: <input type="text" name="rating"/><br/>
    Year: <input type="text" name="year"/><br/>
    <p><input type="submit" value="click to submit"/></p>
</form>

<?php
  if(isset($_POST['submit'])){
    $fields = array('title', 'genre', 'rating', 'year');
      $conditions = array();
      foreach($fields as $field){
        if(isset($_POST[$field]) && $_POST[$field] != ''){
          $conditions[] = "'$field' LIKE '%" . mysqli_real_escape_string($connection, $_POST[$field]) . "%'";
      }

  }

  $query = "SELECT Title, Studio, Status, Sound, Versions, RecRetPrice, Rating, Year, Genre, Aspect FROM movies";

  if(count($conditions) > 0){
    $query .= " WHERE " . implode (' AND ', $conditions);
  }

  $result = mysqli_query($connection, $query) or die(mysql_error());
  mysqli_close($mysqli_link);

  if(isset($_POST['submit'])){
    while($row = mysqli_fetch_assoc($result)){
        $title = $row['Title'];
        $studio = $row['Studio'];
        $status = $row['Status'];
        $sound = $row['Sound'];
        $version = $row['Versions'];
        $retPrice = $row['RecRetPrice'];
        $rating = $row['Rating'];
        $year = $row['Year'];
        $genre = $row['Genre'];
        $aspect = $row['Aspect'];

        echo "Title: $title<br>Studio: $studio<br>";
      }
    }
  }
?>

我相信我在之前的帖子中对代码进行了编辑,走在了正确的轨道上。但是我不能让它打印任何东西..?

标签: phpmysql

解决方案


推荐阅读