Php 使用表的mysql查询选择定义的字符串值
我有一个名为username的表,它有例如Php 使用表的mysql查询选择定义的字符串值,php,mysql,Php,Mysql,我有一个名为username的表,它有例如johndoe,我想在php操作中为$username获取这个值!我用这个 mysql_query("SELECT * FROM photos WHERE username = '$username'"); 它很好用。我使用这个搜索字段返回不同的用户和他们的个人资料。 问题是,我如何才能搜索,例如只搜索名字John,他还给我johndoe。 我不想创造一个名字和姓氏 感谢Ted您可以像一样使用进行模式匹配 SELECT * FROM photos WH
johndoe
,我想在php操作中为$username获取这个值!我用这个
mysql_query("SELECT * FROM photos WHERE username = '$username'");
它很好用。我使用这个搜索字段返回不同的用户和他们的个人资料。
问题是,我如何才能搜索,例如只搜索名字John
,他还给我johndoe
。
我不想创造一个名字和姓氏
感谢Ted您可以像一样使用
进行模式匹配
SELECT * FROM photos WHERE username LIKE '%$username%';
SELECT * FROM photos WHERE username LIKE CONCAT('%','$username', '%')
但这在大型数据库中执行速度较慢,因为它不会使用索引
,导致执行全表扫描
$query = "SELECT * FROM photos WHERE username LIKE CONCAT('%',$username, '%')"
mysql_query($query);
作为旁注,如果变量的值来自外部,则查询易受攻击。请看下面的文章,了解如何预防它。通过使用PreparedStatements
可以避免在值周围使用单引号
您可以使用像
一样进行模式匹配
SELECT * FROM photos WHERE username LIKE CONCAT('%','$username', '%')
但这在大型数据库中执行速度较慢,因为它不会使用索引
,导致执行全表扫描
$query = "SELECT * FROM photos WHERE username LIKE CONCAT('%',$username, '%')"
mysql_query($query);
作为旁注,如果变量的值来自外部,则查询易受攻击。请看下面的文章,了解如何预防它。通过使用PreparedStatements
可以避免在值周围使用单引号
您可以在查询中使用类似于
MySQL子句的
SELECT * FROM photos WHERE username LIKE '$username%'
您可以在查询中使用LIKE
MySQL子句
SELECT * FROM photos WHERE username LIKE '$username%'
您可以使用CONCAT函数获取全名
SELECT CONCAT(First_name, ' ', Lastnale,)
FROM photos
WHERE username LIKE '$username%'
您可以使用CONCAT函数获取全名
SELECT CONCAT(First_name, ' ', Lastnale,)
FROM photos
WHERE username LIKE '$username%'
用一个关于安全性的词:如果$username是站点中搜索字段的值,那么应该正确地跳转给定的搜索模式,而不是让数据库被注入。这只需通过以下代码完成:
$escaped_username = mysql_real_escape_string($_REQUEST['username']);
mysql_query("SELECT * FROM photos WHERE username LIKE '%$escaped_username%'");
这将在您的表中执行安全搜索,可能只使用名字或姓氏
图例:$\u REQUEST['username']是您的搜索表单的值。带有一个关于安全性的词:如果$username是您站点中搜索字段的值,您应该正确地转义给定的搜索模式,而不是插入数据库。这只需通过以下代码完成:
$escaped_username = mysql_real_escape_string($_REQUEST['username']);
mysql_query("SELECT * FROM photos WHERE username LIKE '%$escaped_username%'");
这将在您的表中执行安全搜索,可能只使用名字或姓氏
图例:$\u REQUEST['username']是您的搜索表单的值。如果您希望完全匹配John和John Doe,则不可能,但希望搜索John可以给出两到三个结果,例如John Doe或Steve John,则可以使用“Like”。。。告诉我,如果你想查询…如果你想精确匹配约翰对约翰·多伊,那么这是不可能的,但它希望搜索约翰可以给出两个或三个结果,比如约翰·多伊或史蒂夫·约翰,那么可以使用“Like”。。。告诉我,如果你想查询…嘿,非常感谢,我知道sql注入的问题,我把代码稍微缩小了一点显示在这里!无论如何,谢谢你,这正是我想要的:)嘿,非常感谢,我知道sql注入的问题,我在这里显示的代码稍微小了一点!无论如何,谢谢你,这正是我想要的:)