繁体   English   中英

mySQLi查询将结果放入数组和不同的DIV中

[英]mySQLi query to put results in an array and different DIVs

我想使用mySQLi从mySQL数据库查询多个(总共6个,ID 1至6)ID的内容。 之后,我想将结果(“ introtext”)放入不同的DIV中。 目前,我使用以下代码(完美运行):

<?php
$q = $db->query("SELECT introtext FROM content WHERE id=1");
$r = $q->fetch_object();
?>
<div id="content1" class="toggle"><?php echo "$r->introtext";?></div>

<?php
$q = $db->query("SELECT introtext FROM content WHERE id=2");
$r = $q->fetch_object();
?>
<div id="content2" class="toggle"><?php echo "$r->introtext";?></div>

<?php
$q = $db->query("SELECT introtext FROM content WHERE id=3");
$r = $q->fetch_object();
?>
<div id="content3" class="toggle"><?php echo "$r->introtext";?></div>

等等...

如何优化此代码以仅查询mySQL一次(将结果放入数组中)并将不同的结果分配到不同的DIV中?

干杯切碎机

好问题
基本上你需要两个循环
一个让您的数组与数据:

<?php
$data = array();
$res = $db->query("SELECT id, introtext FROM content ORDER BY id LIMIT 6");
while($row = $res->fetch_assoc()) {
    $data[$row['id']] = $row['introtext'];
}
?>

您可以使用任何SQL来过滤查询。 对于当前情况“获取前6个ID”, ORDER BY id LIMIT 6似乎最方便,因为无法保证连续性。

然后显示另一个循环

<? foreach ($data as $id => $introtext): ?>
<div id="content<?=$id?>" class="toggle"><?=htmlspecialchars($introtext?)></div>
<? endforeach ?>

顺便说一句,如果不使用原始的Mysqli API,而是使用一些帮助程序库,则PHP部分将减少为一行:

<?php
$data = $db->getIndCol("id","SELECT id, introtext FROM content ORDER BY id LIMIT 6");
?>

为什么不使用IN mysql运算符?

SELECT introtext FROM content WHERE id IN (1,2,3,4,5,6);

然后在object / array中获取结果。

如果该项目规模不大,我建议尝试使用RedBean ORM解决方案。 要查看其工作原理,请点击此处非常简单,除了在项目中包含rb.php文件之外,不需要任何其他操作!

顺便说一句,如果您仍然想手动使用mysqli,则解决方案是在查询中使用id> = 1和id <= 6创建新的WHERE,然后使用php参考将结果提取到数组中。mysqli quickstart指南

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM