PHP用名字和姓氏搜索

问题描述 投票:1回答:1

我的项目合作伙伴和我对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 = '';
        }



    }

}
php search wamp
1个回答
0
投票

您可以连接名字和姓氏,然后根据该字符串进行搜索...

SELECT * 
FROM comedian 
WHERE fname ||  ' ' || lname LIKE '%Sarah Silverman%'

即使Sarah存储在fname中,而Silverman存储在lname中,这也会显示“ Sarah Silverman”

Edit:我已经在SQLite中对其进行了测试,您可能必须根据数据库管理系统将||更改为+

© www.soinside.com 2019 - 2024. All rights reserved.