1

FirstName列とLastName列を持つmySQLデータベースがあり、現在、Lastnamesを検索する検索クエリがあり、LastNamesが一致すると、その行のFirstNameとともに画面にエコーされます。入力フィールドに入力されたFullNamesをクエリで検索するには、どのようにすればよいですか。FullName列がないことに注意してください。フルネームは、ユーザーが入力する名前になります。以下は、現在私が持っているものの例です。働く!ありがとう。

if(isset($_GET['name'])){   
    $raw_name=$_GET['name'];

    if(preg_match("/[A-Z | a-z]+/", $raw_name)){        
        $name=$raw_name;        
        include "connect.php";      
        //-query the database table
        $sql="SELECT userId, FirstName, LastName FROM residential2 WHERE FirstName='" . $name   ."'";
        //-run the query against the mysql query function
        $result=mysql_query($sql);
        //-count results
        $numrows=mysql_num_rows($result);

        echo "<div align=\"center\">" . $numrows . " results found for " . stripslashes($name) . "</div>";

        while($row=mysql_fetch_array($result)){         
            $FirstName =$row['FirstName'];
            $LastName=$row['LastName'];
            $userId=$row['userId']; 
            //-display the result of the array
            echo "<ul>\n"; 
            echo "<li>" . "<a href=\"index.php?id=$userId\">" . $LastName . " "  .$FirstName . "   </a></li>\n";
            echo "</ul>";
        }
    }
    else {      
        echo "<p>Please enter a search query</p>";
    }
}
4

6 に答える 6

2

使用するconcat()

$sql="SELECT userId, CONCAT(FirstName, ' ', LastName) AS fullname FROM residential2 WHERE FirstName='" . $name   ."'";

<?php
    $fullname = $row['fullname']; 
?> 
于 2012-06-12T18:46:24.273 に答える
2

その非常にシンプルです!

SELECT * FROM your_table WHERE CONCAT(field1、''、filed2)like'%$ query%'

于 2013-11-08T07:30:09.370 に答える
1

あなたはこれを行うことができます:

$sql="SELECT userId, FirstName, LastName 
            FROM residential2 
            WHERE concat(FirstName, ' ', LastName) like '%$name%'";
于 2012-06-12T18:47:56.457 に答える
0

フルネームをファーストネームとラストネームに分割し、それに応じて検索する必要があります。あなたのためのコードスニペット:

SELECT REVERSE(SUBSTR(REVERSE(name),INSTR(REVERSE(name),' ')+1)) AS first_name,
REVERSE(SUBSTR(REVERSE(name),1,INSTR(REVERSE(name),' '))) AS last_name

それが役に立てば幸い。

于 2012-06-12T18:53:53.897 に答える
0
$frnd_name = trim(preg_replace( "/[ ]+/", " ", $_GET['frnd_search'] ) );
$arr = explode(" ", $frnd_name, 2);

if(!empty($arr[1]))
    $sql_where = "name LIKE '%".$arr[0]."%' AND lastname LIKE '%".$arr[1]."%'";
else
    $sql_where = "name LIKE '%".$arr[0]."%' OR lastname LIKE '%".$arr[0]."%' OR username LIKE '%".$arr[0]."%' OR email LIKE '%".$arr[0]."%'";

$sql = "SELECT name,lastname,username,email FROM user WHERE ".$sql_where;
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "".$row['name']." ".$row['lastname']."<br>";
    }
}
于 2017-03-19T11:43:16.340 に答える
0
SELECT lname, fname FROM TABLE where CONCAT(fname, ' ', lname) LIKE '%$fullname%'
于 2021-12-25T12:04:11.500 に答える