AND在WHERE子句中将无法正常工作

时间:2012-12-16 13:36:17

标签: php mysql sql phpmyadmin

我是新手,我一直在使用CMS,我得到的错误是当我使用以下代码时:

//Group ID

$usergid = mysql_query("SELECT groupid FROM characters WHERE id='$userid'");
$groupid = mysql_fetch_row($usergid);
$groupid = $groupid[0];

//Name of user's group

$usergroupname = mysql_query("SELECT name FROM groups_details WHERE id='$groupid'");
$groupname = mysql_fetch_row($usergroupname);
$groupname = $groupname[0];

//User's job rank

$userjobrank = mysql_query("SELECT jobrank FROM characters WHERE id='$userid'");
$jobrank = mysql_fetch_row($userjobrank);
$jobrank = $jobrank[0];

//User's job name

$userjobname = mysql_query("SELECT name FROM jobranks WHERE `rankid`=`$jobrank` AND `jobid`=`$groupid`");
$jobname = mysql_fetch_array($userjobname);
$jobname = $jobname[0];

我做的最后一个功能不起作用,我尝试删除“AND jobid='$groupid'”,然后它会显示“Banker”,这是我数据库中ID为1的第一个东西。 所有其他功能都有效。

在我的网页中实施<php echo $jobname; ?>时,我得到一个空白区域,但应该说是失业。

我一直在寻找一段时间,但一直找不到任何东西。 任何帮助深表感谢, 谢谢! 利亚

P.S;如果我尝试在PhpMyAdmin中执行SELECT name FROM jobranks WHERE rankid='1' AND jobid='groupid',则显示“Banker”并且工作正常。

1 个答案:

答案 0 :(得分:3)

您收到错误的原因不是因为AND而是因为您在值周围使用反引号。值应该用单引号括起来,而不是用反引号括起来。

SELECT name FROM jobranks WHERE `rankid` = '$jobrank' AND `jobid` = '$groupid'

另外,您的查询容易受到SQL注入攻击,请阅读this SO question.