簡體   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