0

我的 PHP 代码执行以下查询:

$userid = mysql_query("SELECT id FROM users WHERE username = '%".$username."%'");

查询返回为假。我知道这是因为 $userid 在执行此查询后包含一个布尔值。

我尝试在 phpMyAdmin 中执行查询,并注意到该查询仅在我将字符串封装在引号中时才有效,但我认为我不能在 PHP 代码中执行此操作。

我的语法错了吗?谢谢你提供的所有帮助...

更新:当我在执行此查询后回显 $userid 时,我得到以下输出:

Resource id #5Resource id #6

这告诉我查询正在成功执行,我只是没有正确处理结果。

4

3 回答 3

4

您需要使用LIKE运算符:

$userid = mysql_query("SELECT id FROM users WHERE username LIKE '%".$username."%'");

为了完整起见,这里是官方文档的链接

如果您想要完全匹配,那么您应该使用=运算符。

$userid = mysql_query("SELECT id FROM users WHERE username = '".$username."'");

你知道变量中传递的$username值是否有效吗?

于 2013-05-03T03:54:21.500 回答
2

我认为查询中有语法错误..

试试吧,我希望它对你有用..

$userid = mysql_query("SELECT id FROM users WHERE username like '%".$username."%'");
于 2013-05-03T03:57:27.177 回答
0

匹配用户名需要精确!!我相信您不想将LIKE 运算符与通配符一起使用。这是因为你会得到匹配“annamae_potter”的“mae_potter”,因为这 'anna_mae_potter' like '%mae_potter'是真的。

你想使用=

$userid = mysql_query("SELECT id FROM users WHERE username = '".$username."'");

LIKE不带通配符:

$userid = mysql_query("SELECT id FROM users WHERE username like '".$username."'");

现在你可以用你的比赛简洁。

于 2013-05-03T04:27:50.733 回答