gpt4 book ai didi

php - joomla 在一个函数中使用多个数据库查询

转载 作者:行者123 更新时间:2023-12-04 12:52:54 25 4
gpt4 key购买 nike

在某些函数中,我可能需要像这样进行一些查询:

    $user = & JFactory::getUser();
$db = & JFactory::getDBO();
$query = $db->getQuery(true);

$query->select('id');
$query->from($db->quoteName('#__users'));
$query->where('username='.$db->quote($response->username));
$db->setQuery($query);
$user_id = $db->loadResult();

if ($user_id == "")
{
//do something
}


$query1 = $db->getQuery(true);
$query1->select('app_id');
$query1->from($db->quoteName('#__app_ids'));
$query1->where('app_descr='.$db->quote($this->app_descr).' AND app_valid=TRUE');
$db->setQuery($query1);
$app_id = $db->loadResult();

我发现,如果我不将 query 更改为 query1,我将无法使其用于后续查询。在 Joomla 之外,我从来没有这样做过,因为我关闭 mysql 连接使用相同的变量,只要它的顺序正确,一切都很好。

两个问题:

  1. 这样对吗?或者有更好的方法吗?
  2. 是否需要检查 loadResult 的 mysql 故障?我将如何处理这件事。查看 Joomla 核心时,我常常什么也看不到,但有时会混合使用多种方法来处理这个问题。

最佳答案

1) 它应该使用相同的变量名,因为您将获得一个新的查询对象,因为您的方法参数设置为 true。尝试在获取查询对象后立即调用 $query->clear();

$query  = $db->getQuery(true);
$query->clear();
$query->select('app_id');

2) 在 Joomla 3 中它应该是这样的

try
{
$db->setQuery($query);
$user_id = $db->loadResult();
}
catch (RuntimeException $e)
{
$e->getMessage();
}

在 Joomla 2.5 中

if ($db->getErrorNum()) {
JError::raiseWarning(500, $db->getErrorMsg());
}

还有,改变

$user = & JFactory::getUser();
$db = & JFactory::getDBO();

$user = JFactory::getUser();
$db = JFactory::getDBO();

对象在 PHP 5 中无论如何都是通过引用返回的,从 php 5.3+ 开始它会抛出警告

关于php - joomla 在一个函数中使用多个数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15441065/

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