0

いくつかのシリアル番号をデータベースに挿入しようとしています。この範囲を定義し、最後のレコードを返し、関連するシリアル番号が既に挿入されている場合はインクリメントする関数を作成しました。ただし、結果をインクリメントしようとすると、コードでエラーが発生します。ハードコードすると問題なく動作しますが、値をインクリメントしようとするとうまくいきません。

$batch = $_POST['batch'];
$serial=11111111;
if(array_key_exists('batch',$_POST)){
    $query="select serial from serials where serial like";
    $query.="'".$_POST['batch']."%'";
    $query.='order by serial DESC limit 0,1';
    $rs=mysql_query($query);
    while($row= mysql_fetch_assoc($rs)){
        $a =($row[serial]);
        $a = substr($a,0,2);// substring to match the string
        if($a == $batch){
        $a2 =($row[serial]);
        $a2 = substr($a2,2,-1);//substring to get the serial
        $serial =$a2;
        }
        else
        {
        $serial=11111111;
        };
    }
}
function createColumnsArray($end_column, $first_letters = ''){
    $columns = array();
    $length = strlen($v);
    $letters = range($serial,11111999); //(12847017, 12847027);
    foreach ($letters as $letter){
        $column = $first_letters.$_POST['batch'].$letter.'Z';
        $columns[].=$column;
        if ($column == $end_column)
        return $columns;
    }
    foreach ($columns as $column){
        if (!in_array($end_column, $columns) && strlen($column) < $length) {
        $new_columns = createColumnsArray($end_column, $column);
        // Merge the new columns which were created with the final columns array.
        $columns = array_merge($columns, $new_columns);
        }
    }
return $columns;
}
4

2 に答える 2

1

これは、メモリ制限が試行されるためです

ini_set('memory_limit', '256M');

134217728 バイト = 128 MB

または、メモリ消費量が少なくなるように効率的なコードを書き直すことを検討してください。

于 2013-02-13T07:05:15.377 に答える
0
Try...
Allowed memory size maximum. Put the code top of the file
ini_set('memory_limit', '-1');
于 2014-05-06T11:39:59.967 に答える