使用表的mysql查询选择已定义的字符串值

时间:2013-03-14 09:45:46

标签: php mysql

我有一个名为username的表,例如John Doe,我希望在$ username的php操作中获取此值!我用这个

mysql_query("SELECT * FROM photos WHERE username = '$username'");

它工作正常。我在搜索字段中使用它来返回不同的用户及其个人资料。 问题是,我如何只使用名字John进行搜索,然后他再次给我John Doe。 我不想创建名字和姓氏!

谢谢泰德

5 个答案:

答案 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%'