Php 在ModX Revo中运行自定义数据库查询
我试图在ModX Revo中的代码段中查询数据库:Php 在ModX Revo中运行自定义数据库查询,php,mysql,content-management-system,modx,modx-revolution,Php,Mysql,Content Management System,Modx,Modx Revolution,我试图在ModX Revo中的代码段中查询数据库: <?php $leadersql = "SELECT * FROM `modx_menus`"; $result = mysql_query($leadersql); while ($row = mysql_fetch_array($result)) { echo "hello"; }; ?> 在Evo上,这工作正常,但在Revo中没有返回任何内容 是否需要以不同的方式进行设置?理想情况下,您可以使用该方法来构建数
<?php
$leadersql = "SELECT * FROM `modx_menus`";
$result = mysql_query($leadersql);
while ($row = mysql_fetch_array($result)) {
echo "hello";
};
?>
在Evo上,这工作正常,但在Revo中没有返回任何内容
是否需要以不同的方式进行设置?理想情况下,您可以使用该方法来构建数据库查询。它自动转义提供的参数,创建跨数据库类型(当前为mysql和mssql)转换的查询,并具有许多其他好处。然而,由于需要为自定义表创建类和映射,所以设置起来也比较复杂。他有很好的信息,我也是 但是,您当然可以实现特定的查询,而无需使用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);
}
}
还有一个附加组件,用于在数据库表行之间进行迭代—如果您的需求很简单。理想情况下,您可以使用该方法来构建数据库查询。它自动转义提供的参数,创建跨数据库类型(当前为mysql和mssql)转换的查询,并具有许多其他好处。然而,由于需要为自定义表创建类和映射,所以设置起来也比较复杂。他有很好的信息,我也是 但是,您当然可以实现特定的查询,而无需使用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);
}
}
另外还有一个附加组件,用于在数据库表行之间进行迭代—如果您的要求很简单的话。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>';
$leadersql=“从'modx_菜单'中选择*”;
$query=$modx->query($leadersql);
$rows=array();
如果($query){
//循环遍历结果集,每次检查一行
while($row=$query->fetch(PDO::fetch_ASSOC)){
数组\u push($rows,$row);
}
}
回音“
”;
$menus = $modx->getCollection('modMenu');
if ($menus) {
foreach ($menus as $menu) {
echo $menu->get('text');
}
}
打印(行);
回声';
如果没有:
-您是否定义了菜单项?
-您正在调用未缓存的代码段 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>';
$leadersql=“从'modx_菜单'中选择*”;
$query=$modx->query($leadersql);
$rows=array();
如果($query){
//循环遍历结果集,每次检查一行
while($row=$query->fetch(PDO::fetch_ASSOC)){
数组\u push($rows,$row);
}
}
回音“
”;
$menus = $modx->getCollection('modMenu');
if ($menus) {
foreach ($menus as $menu) {
echo $menu->get('text');
}
}
打印(行);
回声';
如果没有:
-您是否定义了菜单项?
-您正在调用未缓存的代码段 为什么不使用内置的xPDO方法:
<?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'];
}
为什么不使用内置的xPDO方法:
<?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'];
}
您可以尝试以下代码:
您可以尝试以下代码:
谢谢,但运气不好!使用自己的表创建自己的数据库并正常连接会更容易吗?我刚刚添加了一行关于Rowboat的内容-你看过了吗?是的-Rowboat只输出查询结果,不是吗?我不能把它转换成PHP变量,可以吗?谢谢,但运气不好!使用自己的表创建自己的数据库并正常连接会更容易吗?我刚刚添加了一行关于Rowboat的内容-你看过了吗?是的-Rowboat只输出查询结果,不是吗?我不能把它放进PHP变量中,可以吗?不要使用GET或POST中的这个具体参数来防止SQL注入。用prepare代替这个。谢谢你们的评论,但我的帖子的目的是展示如何在一个工作版本中从Modx Revo连接到数据库。由作者决定是否需要sql注入保护。例如,您也可以在内部网站上使用modx,这样就不会有sql注入的风险。不要使用GET或POST中的参数来阻止sql注入。用prepare代替这个。谢谢你们的评论,但我的帖子的目的是展示如何在一个工作版本中从Modx Revo连接到数据库。由作者决定是否需要sql注入保护。例如,您也可以在内部网站上使用modx,这样就不会有sql注入的风险。