搜索 - SQL语句

时间:2011-12-06 22:53:54

标签: php sql search

我正在尝试编写搜索功能,它从用户那里获取参数并使用SQL语句从MySQL数据库中获取结果。

声明:

$title = $_GET['title'];    
$result = mysql_query("SELECT name, phone, email from person where name= '$title'");

这句话的问题在于它只是取了确切的名字;如果用户正在寻找“大卫”而只是输入“Da”,则不会找到任何结果。

我需要一个声明,当用户输入部分名称时,显示所有匹配的“Da”。

4 个答案:

答案 0 :(得分:1)

您可以尝试使用通配符搜索,这不是最佳选择,但应该可以使用:

$title = mysql_real_escape_string($_GET['title']);
$result = mysql_query("SELECT name, phone, email from person where name like '$title%'");

答案 1 :(得分:1)

使用LIKE条件

SELECT name, phone, email
FROM person
WHERE name LIKE '%$title%'

这会在$title中的任意位置搜索name

答案 2 :(得分:1)

使用PDO防止SQL注入攻击。 Read it,了解它,编码,实现它。

您需要使用通配符 - %

<?php

$dbh = new PDO('mysql:host=xxx;port=xxx;dbname=xxx', $user, $pass );

$sql = "SELECT name, phone, email from person where name LIKE :username";
$sth = $dbh->prepare( $sql );
$sth->bindValue( ':username', '%' . $_GET['title'] . '%', PDO::PARAM_STR );

$sth->execute();
$result = $sth->fetchAll( PDO::FETCH_OBJ );

print_r( $result );

答案 3 :(得分:0)

我建议您阅读本文,它对您有用:

http://www.w3schools.com/sql/sql_wildcards.asp