我的项目合作伙伴和我对PHP还是比较陌生,因此在搜索多列时需要一些帮助。我们正在尝试一个功能正常的搜索栏,该栏根据所搜索的名字和姓氏返回喜剧演员的名称和相应的youtube url。我们可以使用它来搜索名字或姓氏,但不能同时使用这两个名称。 (即,莎拉(Sarah)或西尔弗曼(Silverman)将起作用,但莎拉·西尔弗曼(Sarah Silverman)将不起作用)我们尝试将子句更改为AND,但这根本不起作用。以下是我们的搜索代码。行
$searchdb = mysqli_query($con,"SELECT *
FROM comedian
WHERE fname LIKE '%$searchq%'
OR lname LIKE '%$searchq%'")
or die ("Could not search.");
这是我们正在尝试修改的。谢谢!
<?php
session_start();
$con = mysqli_connect('localhost','root','') or die("Could not connect");
mysqli_select_db($con, 'youtube') or die(mysqli_error($con));
$output = '';
if(isset($_POST['search'])){
$searchq = $_POST['search'];
//Will replace everything that is not a letter or number with blank.
$searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
$searchdb = mysqli_query($con,"SELECT *
FROM comedian
WHERE fname LIKE '%$searchq%'
OR lname LIKE '%$searchq%'")
or die ("Could not search.");
$count = mysqli_num_rows($searchdb);
if($count == 0){
$output = 'There were no search results.';
print("$output");
}else{
while($row = mysqli_fetch_array($searchdb)){
//Variables
$fname = $row['fname'];
$lname = $row['lname'];
$comedianid = $row['comedianid'];
//Output first and last name
$output .= '<div> <b>Comedian:</b> '.$fname.' '.$lname.'</div>';
//Matching comedian with respective video URL using about table relation.
$searchdb2 = mysqli_query($con,"SELECT * FROM about WHERE comedianid LIKE '%$comedianid%'") or die ("Could not find a video by this author.");
//Fetches comedian id from about table
$row2 = mysqli_fetch_array($searchdb2);
$url = $row2['url'];
$outputvid = preg_replace("#.*youtube\.com/watch\?v=#","",$url);
$outputvid = '<iframe width="700" height="600" src="https://www.youtube.com/embed/'.$outputvid.'"></iframe>';
print("$output");
print("$outputvid");
$output = '';
}
}
}
您可以连接名字和姓氏,然后根据该字符串进行搜索...
SELECT *
FROM comedian
WHERE fname || ' ' || lname LIKE '%Sarah Silverman%'
即使Sarah存储在fname
中,而Silverman存储在lname
中,这也会显示“ Sarah Silverman”
Edit:我已经在SQLite中对其进行了测试,您可能必须根据数据库管理系统将||
更改为+
。