Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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 SQL查询状态_Php_Sql_Database Abstraction - Fatal编程技术网

Php SQL查询状态

Php SQL查询状态,php,sql,database-abstraction,Php,Sql,Database Abstraction,我得到了另一个开发人员编写的一些代码。这是一个php数据库抽象层,我正在努力学习代码,但我不能理解其中的一些内容 class QueryBuilderBase { /* * The builder SQLStates. */ const STATE_DIRTY = 0; const STATE_CLEAN = 1; /** * @var array The array of SQL parts collected. */

我得到了另一个开发人员编写的一些代码。这是一个php数据库抽象层,我正在努力学习代码,但我不能理解其中的一些内容

class QueryBuilderBase
{
    /*
     * The builder SQLStates.
     */
    const STATE_DIRTY = 0;
    const STATE_CLEAN = 1;
    /**
     * @var array The array of SQL parts collected.
     */
    private $SQLBlocks = [
        'select' => [],
        'from' => [],
        'join' => [],
        'set' => [],
        'where' => null,
        'groupBy' => [],
        'having' => null,
        'orderBy' => [],
        'values' => [],
        'limit' => null
    ];
      /**
 *
 * Either appends to or replaces a single, generic query part.
 *
 * The available parts are: 'select', 'from', 'set', 'where',
 * 'groupBy', 'having' and 'orderBy'.
 *
 * @param $sqlPartName
 * @param $sqlPart
 * @param bool $append
 * @return $this
 */

    private function addSQLBlock($sqlPartName, $sqlPart, $append = false)
    {
        $isArray = is_array($sqlPart);
        $isMultiple = is_array($this->SQLBlocks[$sqlPartName]);
        if ($isMultiple && !$isArray)
            $sqlPart = array($sqlPart);
        $this->SQLState = self::STATE_DIRTY;
        .....(some other code that's not relevant)
    }
}
那么,有谁能告诉我他在干什么?州清洁和州肮脏警察的目的是什么
谢谢。

我所能想到的就是STATE\u DIRTY/STATE\u CLEAN是一种标志,用于指示由
$this->SQLBlocks
表示的查询体在上次使用该对象时是否已更改。
如果我错了,请有人纠正我

确实很难准确判断,但从STATE\u DIRTY/STATE\u CLEAN看,它像某种缓存机制,其中底层数据被修改,但尚未保存到数据库中,因此STATE\u DIRTY您对'SQLState'属性有什么想法吗?是的,几乎所有数据库都使用SQLState来表示各种事件,但它们在不同的方面都有所不同代码及其使用方式。是的,这是某种异常值,可以是0/1。顺便问一下,这是哪个dbms?这是对问题的回答/解决方案还是评论/编辑?对我来说,这是最可能的答案,如果其他人有更准确的答案,我很乐意接受