开发者

php search function

I am attempting to create a search function for user profiles on my site.

$search= $_POST['search'];
$res=开发者_如何学编程mysql_query("SELECT * FROM ".TBL_USERS." WHERE username LIKE '$search%'");

This is the code I use. This will only work if you search something that matches the start of the result. Is there any way I can return values that have what i type as part of the username regardingless of upper or lower cases?

Thankyou


"%" is the wildcard, so if you also place it in front of your search string (like %$search%) it will match $search anywhere in username.

Use "LOWER" in SQL to make your username lowercase and "strtolower" in PHP to do the same, then execute the query to get case-insensitive results.

And as David Dorward said: read bobby-tables.com before you do anything else!!!


You should really add some sort of data cleansing, you should never take raw post/get data and insert it directly into a query.

With that said:

$search= strtolower($_POST['search']);
$res=mysql_query("SELECT * FROM ".TBL_USERS." WHERE LOWER(username) LIKE '$search%'");


As you are using LIKE you can use the % wildcard on both sides of the input, this will return any users where $search is part of the username.

You may also want to look at MySQLs REGEXP function

$search= mysql_real_escape_string($_POST['search']);
$res=mysql_query("SELECT * FROM ".TBL_USERS." WHERE username LIKE '%" . $search . "%'");


You need to read about the terms "SQL Injection" and "PHP Prepared Statements" - Google for them... This is FAR more important that the question you have asked.

But since you ask, try the comparison all in upper case...

Martin.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜