我正在尝试编写搜索功能,它从用户那里获取参数并使用SQL语句从MySQL数据库中获取结果。
声明:
$title = $_GET['title'];
$result = mysql_query("SELECT name, phone, email from person where name= '$title'");
这句话的问题在于它只是取了确切的名字;如果用户正在寻找“大卫”而只是输入“Da”,则不会找到任何结果。
我需要一个声明,当用户输入部分名称时,显示所有匹配的“Da”。
答案 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)
我建议您阅读本文,它对您有用: