php - 通过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>";
}
}
}
?>
我相信我在之前的帖子中对代码进行了编辑,走在了正确的轨道上。但是我不能让它打印任何东西..?
解决方案
推荐阅读
- r - 在 R-studio 中,我想知道如何在不删除前一个循环结果的情况下保存循环结果
- c - 将信息放入列表中。C
- javascript - luxon中数字日期偏移的困难
- laravel - 为什么 Laravel 8.x / Jetstream 电子邮件验证不起作用?
- typescript - 有像 as3 这样的打字稿字典吗?
- c# - 如何在 C# 中将新数组作为参数传递
- c# - 如何使用使用 C# .NET Core REST API 中的库的客户端重命名 JsonPropertyName
- powerbi - Power BI 矩阵总计不会加起来
- asp.net-core-3.1 - ModelState 验证,一次只显示一个错误
- javascript - 当 iOS Swift 应用程序发送到后台时,“无法设置标题后发送到客户端”NodeJS 错误