2012-09-18 105 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