我有这 2 个 mysql 表:TableA 和 TableB
TableA
* ColumnAId
* ColumnA1
* ColumnA2
TableB
* ColumnBId
* ColumnAId
* ColumnB1
* ColumnB2
在 PHP 中,我想要这种多维数组格式
$array = array(
array(
'ColumnAId' => value,
'ColumnA1' => value,
'ColumnA2' => value,
'TableB' => array(
array(
'ColumnBId' => value,
'ColumnAId' => value,
'ColumnB1' => value,
'ColumnB2' => value
)
)
)
);
这样我就可以用这种方式循环它
foreach($array as $i => $TableA) {
echo 'ColumnAId' . $TableA['ColumnAId'];
echo 'ColumnA1' . $TableA['ColumnA1'];
echo 'ColumnA2' . $TableA['ColumnA2'];
echo 'TableB\'s';
foreach($value['TableB'] as $j => $TableB) {
echo $TableB['...']...
echo $TableB['...']...
}
}
我的问题是,查询 MySQL 数据库的最佳方法或正确方法是什么,以便实现这个目标?
解决方案1 --- 我正在使用的那个
$array = array();
$rs = mysqli_query("SELECT * FROM TableA", $con);
while ($row = mysqli_fetch_assoc($rs)) {
$rs2 = mysqli_query("SELECT * FROM Table2 WHERE ColumnAId=" . $row['ColumnAId'], $con);
// $array = result in array
$row['TableB'] = $array2;
}
我怀疑我的代码会导致它总是查询数据库。
解决方案2
$rs = mysqli_query("SELECT * FROM TableA JOIN TableB ON TableA.ColumnAId=TableB.ColumnAId");
while ($row = mysqli_fet...) {
// Code
}
第二种解决方案只查询一次,但是如果我在 TableA 中有数千行,在 TableB 中有数千行,每个 TableB.ColumnAId (1 TableA.ColumnAId = 1000 TableB.ColumnAId),那么这个解决方案 2 比解决方案 1 花费更多时间?