1

ModXRevo内のスニペット内でデータベースをクエリしようとしています。

<?php

$leadersql = "SELECT * FROM `modx_menus`";

$result = mysql_query($leadersql);

while ($row = mysql_fetch_array($result)) {
  echo "hello";
};

?>

Evoではこれは正常に機能しましたが、Revoでは何も返されません。

別の方法で設定する必要がありますか?

4

4 に答える 4

9

Christian のコードは機能します。最初に $rows 配列を定義する必要がある場合があります。

$leadersql = "SELECT * FROM `modx_menus`";

$query = $modx->query($leadersql);

$rows = array();

if ($query) {
    // loop through the result set and inspect one row at a time
    while ($row = $query->fetch(PDO::FETCH_ASSOC)) {

        array_push($rows, $row);

    }
}

echo '<br /><br /><pre>';
        print_r($rows);
echo '</pre>';

そうでない場合: - メニュー項目が定義されていますか? - スニペットを非キャッシュと呼んでいますか?

于 2012-09-18T12:20:30.563 に答える
4

理想的には、データベース クエリの作成にはxPDOメソッドを使用します。提供された引数を自動的にエスケープし、データベースの種類 (現在は mysql と mssql) 間で変換されるクエリを作成し、その他多くの利点があります。ただし、カスタム テーブルのクラスとマップを作成する必要があるため、セットアップも複雑です。Lazylegsと同様に、 Bob のガイドには良い情報があります。

もちろん、XPDO を使用せずに特定のクエリを実装することもできます。

$leadersql = "SELECT * FROM `modx_menus`";
$query = $modx->query($leadersql);
if ($query) {
    // loop through the result set and inspect one row at a time
    while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
        array_push($rows, $row);
    }
}

また、要件が単純な場合は、データベース テーブルの行を反復処理するためのRowboatアドオンもあります。

于 2012-09-18T05:16:43.783 に答える
3

組み込みの xPDO メソッドを使用しない理由:

$menus = $modx->getCollection('modMenu');
if ($menus) {
    foreach ($menus as $menu) {
        echo $menu->get('text');
    }
}
于 2012-09-20T08:33:17.193 に答える
-2

このコードを試すことができます:

<?php
include './core/config/config.inc.php';

$con=mysqli_connect($database_server,$database_user,$database_password,$dbase);
// Check connection
mysqli_set_charset($con, "utf8");
if (mysqli_connect_errno()) {
    //echo "Failed to connect to MySQL: " . mysqli_connect_error();
    return "DB error";
}

$result = mysqli_query($con,"SELECT id, pagetitle, uri FROM `modx_site_content` WHERE parent = ".$parentId); 
while($row = mysqli_fetch_array($result))
{
  //do something with $row['pagetitle'];
}

ここで、$parentId は Snippet 呼び出しのパラメーターの例です。

于 2015-10-27T15:28:09.290 に答える