1

mySQLi を使用して、mySQL データベースから複数 (合計 6 個、ID 1 から 6) の ID の内容を照会したいと考えています。その後、結果 (「イントロテキスト」) を別の 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 を 1 回だけクエリし (結果を配列に入れる)、異なる結果を異なる DIV に割り当てるにはどうすればよいですか?

乾杯シュレッダー

4

3 に答える 3

0

良い質問です。基本的 に、データを含む配列を取得するには、
2 つのループが必要です。

<?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 を使用してクエリを除外できます。ORDER BY id LIMIT 6連続性が保証されないため、現在のケース「最初の 6 つの ID を取得する」のが最も便利なようです。

そして、表示する別のループ

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

ところで、未加工の Mysqli API ではなくヘルパー ライブラリを使用する場合、PHP 部分は 1 行に削減されます。

<?php
$data = $db->getIndCol("id","SELECT id, introtext FROM content ORDER BY id LIMIT 6");
?>
于 2013-02-17T09:08:41.933 に答える
-1

IN mysql 演算子を使用しないのはなぜですか?

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

次に、結果を object/array にフェッチします。

于 2013-02-17T09:09:28.610 に答える
-1

プロジェクトが大きくない場合は、RedBean ORMソリューションを試してみることをお勧めします。それがどのように機能するかを確認するには、ここ にアクセスしてください。非常に簡単で、プロジェクトに rb.php ファイルを含めるだけです。

ちなみに、まだ mysqli を手動で使用したい場合の解決策は、クエリで id >= 1 および id <= 6 の新しい WHERE を作成し、php 参照を使用して結果を配列に抽出することです... mysqli クイックスタートガイド

于 2013-02-17T09:10:30.637 に答える