ModXRevo内のスニペット内でデータベースをクエリしようとしています。
<?php
$leadersql = "SELECT * FROM `modx_menus`";
$result = mysql_query($leadersql);
while ($row = mysql_fetch_array($result)) {
echo "hello";
};
?>
Evoではこれは正常に機能しましたが、Revoでは何も返されません。
別の方法で設定する必要がありますか?
ModXRevo内のスニペット内でデータベースをクエリしようとしています。
<?php
$leadersql = "SELECT * FROM `modx_menus`";
$result = mysql_query($leadersql);
while ($row = mysql_fetch_array($result)) {
echo "hello";
};
?>
Evoではこれは正常に機能しましたが、Revoでは何も返されません。
別の方法で設定する必要がありますか?
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>';
そうでない場合: - メニュー項目が定義されていますか? - スニペットを非キャッシュと呼んでいますか?
理想的には、データベース クエリの作成には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アドオンもあります。
組み込みの xPDO メソッドを使用しない理由:
$menus = $modx->getCollection('modMenu');
if ($menus) {
foreach ($menus as $menu) {
echo $menu->get('text');
}
}
このコードを試すことができます:
<?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 呼び出しのパラメーターの例です。