gpt4 book ai didi

php - 将 PHP SQL 转换为 Joomla SQL 查询

转载 作者:行者123 更新时间:2023-11-28 23:36:12 25 4
gpt4 key购买 nike

我正在将一个 PHP 页面移动到我的 Joomla 网站,我被告知我“应该对所有内容使用 Joomla 的编码标准和方法,这包括数据库查询”/p>

我的问题是:

我应该如何根据 Joomla 标准转换我的旧 PHP 代码:

$query = "SELECT * FROM `TABLE 2` WHERE Power=".$input->get('Power', '', 'RAW')." AND Poles=".$input->get('Poles', '', 'RAW')."";

$results = mysql_query($query)
or die(mysql_error());
while ($row = mysql_fetch_array($results))
{
extract($row);
}
?>

这是表 2 的内容。我将每行的值用作我页面上的变量。

enter image description here

最佳答案

最重要的是确保过滤输入以禁止 sql 注入(inject)。似乎您的输入都是数字(Power 是一个 float ,Poles 可能是一个整数?)。也可以在表名中使用#__,当您在 joomla 函数中使用它时,它将被表前缀替换。转换代码的最简单方法如下:

$app = JFactory::getApplication();
$power = $app->input->getFloat('Power'); // use the correct function
$poles = $app->input->getInt('Poles'); // for the datatype you want

参见 here对于 JInput 文档

$db = $app->getDbo();
//short variant
$sql = "SELECT * from `#__table 2` WHERE power = "
. $db->quote($power) . " AND poles = " . $db->quote($poles);
$db->setQuery($sql);
$result = $db->loadRowList();
foreach($result as $array){
print_r($array);
}

应该注意的是,还有更多有用的方法来检索数据,loadAssoc/loadAssocList 用于关联数组,loadObject/loadObjectList 用于对象。检查docs for JDatabaseDriver

或者,您可以将查询转换为“Joomla 查询”,例如:

$q = $db->getQuery();
$q->select("*")->from($q->quoteName("#__Table 2"));
$q->where("Power = " . $db->quote($power));
$q->where("Poles = " . $db->quote($poles));
$db->setQuery($q);
...

Docs to JDatabaseQuery

关于php - 将 PHP SQL 转换为 Joomla SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35675497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com