我有一个名为username的表,例如John Doe
,我希望在$ username的php操作中获取此值!我用这个
mysql_query("SELECT * FROM photos WHERE username = '$username'");
它工作正常。我在搜索字段中使用它来返回不同的用户及其个人资料。
问题是,我如何只使用名字John
进行搜索,然后他再次给我John Doe
。
我不想创建名字和姓氏!
谢谢泰德
答案 0 :(得分:2)
SELECT * FROM photos WHERE username LIKE '%$username%';
答案 1 :(得分:2)
说明安全性:如果$ username是站点中搜索字段的值,则应正确转义给定的搜索模式,而不是注入数据库。这只需通过以下代码完成:
$escaped_username = mysql_real_escape_string($_REQUEST['username']);
mysql_query("SELECT * FROM photos WHERE username LIKE '%$escaped_username%'");
这将在您的表格中执行安全搜索,可以只使用名字或姓氏。
图例:$ _REQUEST ['username']是搜索表单的值。
答案 2 :(得分:1)
您可以使用LIKE
进行模式匹配,
SELECT * FROM photos WHERE username LIKE CONCAT('%','$username', '%')
但是这会在大型数据库中执行缓慢,因为它不会使用index
导致执行FULL TABLE SCAN
。
$query = "SELECT * FROM photos WHERE username LIKE CONCAT('%',$username, '%')"
mysql_query($query);
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
答案 3 :(得分:1)
您可以在查询中使用LIKE
MySQL子句
SELECT * FROM photos WHERE username LIKE '$username%'
答案 4 :(得分:0)
您可以使用CONCAT功能获取全名
SELECT CONCAT(First_name, ' ', Lastnale,)
FROM photos
WHERE username LIKE '$username%'