我有一个在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没有显示出来。我确信有一些显而易见的东西我会失踪,但对于我的生活,我找不到它。任何帮助将不胜感激。
答案 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通过结果对行进行交互。