2012-09-18 102 views
1

我想鏌鋣雷沃中的一個片段中查詢數據庫:運行自定義數據庫查詢

<?php 

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

$result = mysql_query($leadersql); 

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

?> 

在埃沃這個工作得很好,但在雷沃沒有返回。

我是否需要設置不同?

回答

8

基督徒的代碼不工作,你可能需要先定義$排陣:

$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>'; 

如果不是: - 你有菜單項定義? - 您正在調用您的代碼段未緩存?

4

理想情況下,您可以使用xPDO方法來構建數據庫查詢。它會自動轉義提供的參數,創建跨數據庫類型轉換的查詢(目前爲mysql & mssql),並具有許多其他優點。但是,您需要爲自定義表創建類和地圖,因此設置起來也更爲棘手。 Bob's guides具有良好的信息一樣,Lazylegs

但是,當然,你可以實現你的特定的查詢,而無需使用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附加,跨數據庫錶行迭代 - 如果您的要求很簡單。

+0

謝謝,但沒有運氣!用我自己的表創建我自己的數據庫並正常連接它會更容易嗎? – MeltingDog

+0

我剛剛添加了一條關於划艇的專欄 - 你看過嗎? – christianhanvey

+0

是 - 划艇只輸出查詢結果不是嗎?我不能把它放到PHP變量可以嗎? – MeltingDog

3

爲什麼不使用內置的xPDO方法:

$menus = $modx->getCollection('modMenu'); 
if ($menus) { 
    foreach ($menus as $menu) { 
     echo $menu->get('text'); 
    } 
} 
-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的是片段調用示例參數。

+0

不要在GET或POST中使用這些參數,以防止SQL注入。使用準備而不是這個。檢查http://php.net/manual/ro/mysqli.prepare.php – Laurentiu

+0

感謝您的評論,但我的文章的目的是顯示如何連接到Modx Revo數據庫,在工作版本。由作者決定天氣sql注入保護是不是必要的。例如,你也可以在內部網站上使用modx,在那裏沒有sql注入的風險。 – TomoMiha