PHP / MySQL - 使用内部联接从记录集中丢失的值

时间:2014-03-08 23:17:45

标签: 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='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_user的任何数据的预期结果,但是来自tbl_roles的角色和uid没有显示出来。我确信有一些显而易见的东西我会失踪,但对于我的生活,我找不到它。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您正在创建一个您不需要的额外数组级别。 $ 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通过结果对行进行交互。

相关问题