Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 执行数据库查询后关闭会话_Php_Sql_Joomla_Security - Fatal编程技术网

Php 执行数据库查询后关闭会话

Php 执行数据库查询后关闭会话,php,sql,joomla,security,Php,Sql,Joomla,Security,我在joomla和sql方面的经验很少,我非常感谢您的帮助! 我正在使用joomla 2.5,我正在查询数据库中的数据,并使用以下代码将其存储在内存中: function getList() { $mainframe = JFactory::getApplication('site'); $db = JFactory::getDBO(); $query = " SELECT *

我在joomla和sql方面的经验很少,我非常感谢您的帮助! 我正在使用joomla 2.5,我正在查询数据库中的数据,并使用以下代码将其存储在内存中:

function getList()
{
    $mainframe = JFactory::getApplication('site');
        $db = JFactory::getDBO();
        $query = "  SELECT 
                    * 
                FROM 
                    #__ListUser 
                WHERE
                    $db->setQuery( $query );"
        $rows = $db->loadObjectList();
        return $rows;
}
我有三个问题

  • 当我查询数据库时,会打开一个新的DB会话,我需要在之后关闭它还是自动关闭它?
  • 您知道实现此方法的更有效方法吗(用户会话内存大小约为11MB!)
  • 使用此方法访问数据库是否存在任何安全问题

  • 多谢各位!任何帮助都将不胜感激

    代码应该是这样的(我不知道它现在如何工作):

    请注意。。。。需要一个条件(否则,如果需要所有行,请删除以下位置和内容)

  • 你不需要关闭它
  • 11Mb不一定是由于该查询,请尝试添加限制0,1(仅返回一行),您将看到您的内存变化不大。在全局配置中启用“调试”,然后重新加载组件。在页面的最底部,您将看到哪些扩展正在消耗您的内存。11Mb是可以接受的,但在大多数安装上都可以
  • 如果您使用输入参数创建WHERE条件,只需确保$db->quote()中包含任何值即可防止SQL注入

  • 代码应该是这样的(我不知道它现在如何工作):

    请注意。。。。需要一个条件(否则,如果需要所有行,请删除以下位置和内容)

  • 你不需要关闭它
  • 11Mb不一定是由于该查询,请尝试添加限制0,1(仅返回一行),您将看到您的内存变化不大。在全局配置中启用“调试”,然后重新加载组件。在页面的最底部,您将看到哪些扩展正在消耗您的内存。11Mb是可以接受的,但在大多数安装上都可以
  • 如果您使用输入参数创建WHERE条件,只需确保$db->quote()中包含任何值即可防止SQL注入
  • 试一试

    试一试

    一,

    解闷:

    如果要关闭或断开数据库会话,可以使用:

    $db->disconnect(); // See: http://api.joomla.org/cms-3/classes/JDatabaseDriver.html#method_disconnect
    
    但是我想,对于想要使用JFactory::getDBO()的其他模块、插件或模板,数据库连接都是必需的;当时也已关闭,需要重新打开

    更好:

    将查询传输到PHP变量后,应改用自由结果:

    一,

    解闷:

    如果要关闭或断开数据库会话,可以使用:

    $db->disconnect(); // See: http://api.joomla.org/cms-3/classes/JDatabaseDriver.html#method_disconnect
    
    但是我想,对于想要使用JFactory::getDBO()的其他模块、插件或模板,数据库连接都是必需的;当时也已关闭,需要重新打开

    更好:

    将查询传输到PHP变量后,应改用自由结果:


    这在2.5中是行不通的。您需要$query=$db->getQuery(true);事实上,它在2.5版本中确实可以工作,当然你的代码对于Joomla来说更正确,但是我试图将编辑保持在最低限度以编写答案,这样AssafW就能够轻松地发现错误。嗨,非常感谢你的帮助!代码是有效的,我只编写了部分代码作为示例(查询中实际上有WHERE条件:)如何使用$query=$db->getQuery(true);影响我的代码?谢谢你回答我所有的问题!这在2.5中是行不通的。您需要$query=$db->getQuery(true);事实上,它在2.5版本中确实可以工作,当然你的代码对于Joomla来说更正确,但是我试图将编辑保持在最低限度以编写答案,这样AssafW就能够轻松地发现错误。嗨,非常感谢你的帮助!代码是有效的,我只编写了部分代码作为示例(查询中实际上有WHERE条件:)如何使用$query=$db->getQuery(true);影响我的代码?谢谢你回答我所有的问题!
    $db->disconnect(); // See: http://api.joomla.org/cms-3/classes/JDatabaseDriver.html#method_disconnect
    
    $db->freeResult();