Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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_Mysql_Zend Framework_Redbean - Fatal编程技术网

Php 数据库查询后增量计数器中的可预测随机副本

Php 数据库查询后增量计数器中的可预测随机副本,php,mysql,zend-framework,redbean,Php,Mysql,Zend Framework,Redbean,前言:我正在使用Zend Framework 1.12和RedBean PHP 下面的函数查询该表以查看是否存在任何条目。如果为true,它将从文件名中删除该数值,增加该数值,然后返回该数值。很简单。如果不存在条目,则从1开始。同样,基本的。除2个可预测的随机时刻外,所有这些都按预期工作。我之所以说“可预测的随机”,是因为我多次成功地复制了这个问题,每次结果都相似,但不同 可预测的部分是,当计数器是orders\u manuforders时,数值似乎会重复两次。orderFormFilename

前言:我正在使用Zend Framework 1.12和RedBean PHP

下面的函数查询该表以查看是否存在任何条目。如果为true,它将从文件名中删除该数值,增加该数值,然后返回该数值。很简单。如果不存在条目,则从1开始。同样,基本的。除2个可预测的随机时刻外,所有这些都按预期工作。我之所以说“可预测的随机”,是因为我多次成功地复制了这个问题,每次结果都相似,但不同


可预测的部分是,当计数器是
orders\u manuforders时,数值似乎会重复两次。orderFormFilename
列上有一个唯一的索引,对吗?或者,换句话说,您是否确保表中的数据实际上是正确的,并且不包含重复的数据?无论文件名是否唯一,事实是它不应该创建重复的迭代,因为它正在提取前一个值并递增它。我甚至将其设置为拉取通过RedBean生成的id字段,并将其递增。这个值实际上是唯一的。然而,结果是一样的。计数器值似乎在某个点暂停,然后再次恢复。我设法找到了解决方法,也许是执行此脚本的更好方法-我不认为这是一个答案,因为它没有解释重复的原因。我没有使用
R::getAll()
函数对数字进行条带化,而是使用
R::count()
函数对数据库中的条目数进行计数,然后为下一个条目增加该数字。工作起来像一个符咒,但没有提供洞察来回答问题。
    public function getNextOrderFormNumber() {      
    $orderFormNumber = R::getCell( 'select orderFormFilename from orders_manufOrderForms order by dateCreated desc limit 1' );

    // if an entry exits
    // the result will be like 'mmOrderForm-1.pdf'
    if($orderFormNumber){
        $num = explode('.', substr($orderFormNumber, 12));
        $this->orderFormNumber = $num[0];
    }

    Zend_Debug::dump($orderFormNumber, 'DB');
    Zend_Debug::dump($this->orderFormNumber, 'Current Number');
    Zend_Debug::dump( date('i:s') );

    // start at 1 for first order, else increment the value
    if(!$this->orderFormNumber) {
        $this->orderFormNumber = 1;
    } else {
        $this->orderFormNumber++;
    }

    Zend_Debug::dump($this->orderFormNumber, 'newOrderNumber');
    return $this->orderFormNumber;
}
DB array(0) {
}
Current Number NULL
string(5) "26:29"
newOrderNumber int(1)
filename to save as string(17) "mmOrderForm-1.pdf"
--
DB string(17) "mmOrderForm-1.pdf"
Current Number string(1) "1"
string(5) "26:30"
newOrderNumber int(2)
filename to save as string(17) "mmOrderForm-2.pdf"
--
DB string(17) "mmOrderForm-2.pdf"
Current Number string(1) "2"
string(5) "26:31"
newOrderNumber int(3)
filename to save as string(17) "mmOrderForm-3.pdf"
--
DB string(17) "mmOrderForm-2.pdf"
Current Number string(1) "2"
string(5) "26:31"
newOrderNumber int(3)
filename to save as string(17) "mmOrderForm-3.pdf" <-- first occurrence
--
DB string(17) "mmOrderForm-3.pdf"
Current Number string(1) "3"
string(5) "26:32"
newOrderNumber int(4)
filename to save as string(17) "mmOrderForm-4.pdf"
--
DB string(17) "mmOrderForm-4.pdf"
Current Number string(1) "4"
string(5) "27:36"
newOrderNumber int(5)
filename to save as string(17) "mmOrderForm-5.pdf"
--
DB string(17) "mmOrderForm-5.pdf"
Current Number string(1) "5"
string(5) "27:37"
newOrderNumber int(6)
filename to save as string(17) "mmOrderForm-6.pdf"
--
DB string(17) "mmOrderForm-6.pdf"
Current Number string(1) "6"
string(5) "27:38"
newOrderNumber int(7)
filename to save as string(17) "mmOrderForm-7.pdf"
--
DB string(17) "mmOrderForm-7.pdf"
Current Number string(1) "7"
string(5) "27:39"
newOrderNumber int(8)
filename to save as string(17) "mmOrderForm-8.pdf"
--
DB string(17) "mmOrderForm-7.pdf"
Current Number string(1) "7"
string(5) "27:39"
newOrderNumber int(8)
filename to save as string(17) "mmOrderForm-8.pdf" <-- second occurrence