PHP/MySQL-使用内部联接的记录集中缺少值

PHP/MySQL-使用内部联接的记录集中缺少值,php,mysql,Php,Mysql,我有一个在MySQL中执行时可以正常工作的查询,但是当我尝试在PHP中使用它时,它不会改变联接表的值 以下是SQL: SELECT tbl_user.uid, tbl_user.username, tbl_roles.role, tbl_user.fkRole, tbl_Roles.uid FROM tbl_user INNER JOIN tbl_roles ON tbl_user.fkRole=tbl_roles.uid WHERE tbl_user.userName

我有一个在MySQL中执行时可以正常工作的查询,但是当我尝试在PHP中使用它时,它不会改变联接表的值

以下是SQL:

SELECT tbl_user.uid, tbl_user.username,
       tbl_roles.role, tbl_user.fkRole, tbl_Roles.uid
  FROM tbl_user 
 INNER JOIN tbl_roles ON tbl_user.fkRole=tbl_roles.uid 
 WHERE tbl_user.userName='AdamWest'
我使用以下命令将其作为$MySQLQuery分配给记录集:

include 'inc_openConStr.php';

$dbResult = mysql_query($mySQLQuery, $connStr) 
          or die ("MySQL Error: " . mysql_error() );
$numRecords = mysql_num_rows($dbResult);
$rs = "";

for($i=0;$i<$numRecords;$i++){
  $rs[] = mysql_fetch_assoc($dbResult); 
}
include 'inc_closeConStr.php';
然后我就试着这样看待它:

foreach($rs as $roleRS){

echo $roleRS['userName'].'<br/>';
echo $roleRS['role'].'<br/>';
echo $roleRS['fkRole'].'<br/>'; 

}

我得到了来自tbl_用户的任何数据的预期结果,但是tbl_角色的角色和uid没有显示。我肯定有一些明显的东西我错过了,但就我的生命而言,我找不到它。任何帮助都将不胜感激。

您正在创建一个不需要的额外阵列级别$dbResult是一个包含行的数组,每个行也是一个数组。foreach循环似乎需要行,但每次在循环中都要导入完整的结果集(一个行数组)。试试这个:

$dbResult = mysql_query($mySQLQuery, $connStr) 
          or die ("MySQL Error: " . mysql_error() );
$numRecords = mysql_num_rows($dbResult);

while ($dbRow = mysql_fetch_array($dbResult) ) {

    echo $dbRow['userName'].'<br/>';
    echo $dbRow['role'].'<br/>';
    echo $dbRow['fkRole'].'<br/>'

}

但是这个数据库被贬低了。最好改用PDO,然后您将使用foreach在结果中交互行。

取决于您的服务器tbl_Roles.uid可能必须是tbl_Roles.uid。我已经尝试过了,我得到了通知:未定义的索引:tbl_users.userName in C:\xampp\htdocs\Conformance\includes\inc_getUser.php on line确保您的大小写与数据库和表的大小写匹配返回行,以便您可以看到实际的键。此外,使用列别名也可能很有用。