我正在尝试编写搜索函数,它从用户那里获取参数,并使用SQL语句从MySQL数据库中获取结果。
声明:
$title = $_GET['title'];
$result = mysql_query("SELECT name, phone, email from person where name= '$title'");这条语句的问题是,它只接受确切的名称;如果用户正在查找"David“,并且只输入"Da”,那么将找不到结果。
我需要一个语句,当用户输入部分名称时,显示所有与"Da“匹配的内容。
发布于 2011-12-07 06:56:10
您可以尝试通配符搜索,这并不是最优的,但应该是有效的:
$title = mysql_real_escape_string($_GET['title']);
$result = mysql_query("SELECT name, phone, email from person where name like '$title%'");发布于 2011-12-07 06:57:35
使用LIKE条件
SELECT name, phone, email
FROM person
WHERE name LIKE '%$title%'这将在name中搜索$title anywhere。
发布于 2011-12-07 07:08:02
使用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 );https://stackoverflow.com/questions/8408079
复制相似问题