【发布时间】:2026-01-14 23:35:01
【问题描述】:
我正在尝试使用数据库表中的信息填充网格。我设法使用蛮力和 mysql 来实现这一点,但是现在我正在将代码升级到 mysqli,我想以一种更优雅的方式来做到这一点。 这是我想要的输出:
|--------------------|--------| |col0row0 标题 |col1row0 标题 | |col0row0 作者 |col1row0 作者 | |col0row0 电子邮件 |col1row0 电子邮件 | |------------------------------------------------------| |col0row1 标题 |col1row1 标题 | |col0row1 作者 |col1row1 作者 | |col0row1 电子邮件 |col1row1 电子邮件 | |------------------------------------------------------| |依此类推后续行我过去曾使用非常丑陋的代码来做到这一点,如下所示:
for($x=0;$x<$numberSides;$x++) {
for ($y=0;$y<$numberRows;$y++) {
$queryString[$x][$y] = "SELECT * from comments WHERE topic_id = '1' AND col = '{$x}' AND row = '{$y}' ";
}
}
$col0Row0_mysqlQuery = mysql_query($queryString[0][0] , $commenting_conn) or die(mysql_error());
$col0Row1_mysqlQuery = mysql_query($queryString[0][1] , $commenting_conn) or die(mysql_error());
$col0Row2_mysqlQuery = mysql_query($queryString[0][2] , $commenting_conn) or die(mysql_error());
$col1Row0_mysqlQuery = mysql_query($queryString[1][0] , $commenting_conn) or die(mysql_error());
$col1Row1_mysqlQuery = mysql_query($queryString[1][1] , $commenting_conn) or die(mysql_error());
$col1Row2_mysqlQuery = mysql_query($queryString[1][2] , $commenting_conn) or die(mysql_error());
// load those into output arrays
$col0Row0_output = mysql_fetch_assoc($col0Row0_mysqlQuery);
$col0Row1_output = mysql_fetch_assoc($col0Row1_mysqlQuery);
$col0Row2_output = mysql_fetch_assoc($col0Row2_mysqlQuery);
$col1Row0_output = mysql_fetch_assoc($col1Row0_mysqlQuery);
$col1Row1_output = mysql_fetch_assoc($col1Row1_mysqlQuery);
$col1Row2_output = mysql_fetch_assoc($col1Row2_mysqlQuery);
然后我会为网格中的每个字段回显 col0row0_output['title']、col0row0_output['author'] 等,以获得我想要的输出。这不是编写此代码的有效方法,但我是初学者,所以我做了我必须让它用于演示的方法。
我的表格中的每条评论都已经包含一个列和一个行字段,所以我想将其直接转换到网格中。进一步解释:每个方格可以有多个评论。所以记录可能如下所示:
Table fields: "title" / "author" / "email" / "row" / "col"
Record 0: TitleA /AuthorA /EmailA /0 /0
Record 1: TitleB /AuthorB /EmailB /1 /0
Record 2: TitleC /AuthorC /EmailC /0 /1
Record 3: TitleD /AuthorA /EmailA /1 /1
Record 4: TitleE /AuthorB /EmailB /0 /0
因此记录 0 和记录 4 都在网格正方形 0,0 中。 我现在正试图移动到一个循环和一个 3D 数组以使其工作。我希望能够创建 3D 数组,以便我的 echo 命令类似于 col0row0 的标题字段的 output[0][0]['title'],output[1][0]['author' ] 为 col1row0。
我也正在远离 mysql 并用 mysqli 代替它。(PDO 对我来说有点太高级了,但如果人们认为 PDO 有最好的解决方案,我想我可以从你的回复中学习)。
例如,我可以创建一个将 SQL 结果存储为数组的循环吗?例如:
for($x=0;$x<$numberSides;$x++) {
for ($y=0;$y<$numberRows;$y++) {
$queryString[$x][$y] = "SELECT * from comments WHERE topic_id = '1' AND col = '{$x}' AND row = '{$y}' ";
$sqlResult[$x][$y] = mysqli_query($connection, $queryString[$x][$y]);
$resultArray[$x][$y] = mysqli_fetch_assoc($sqlResult[$x][$y]);
}
}
这行得通吗?有没有一种优雅的方式来实现我希望做的事情?我很感激这方面的任何指导。谢谢!
【问题讨论】:
-
Arrsy[0] = array[''][''] 是这个 3d
标签: php mysql arrays pdo mysqli