Drupal fonksiyonu db_query () mağazalar çok büyük değil IntS için değer taşma

0 Cevap php

Ben özel bir modül bir çıkış kanca içinde bu kodu vardır:

$diff = round(((microtime(true)-$script_start_time)*1000));
watchdog('thaty', $diff);
    if(variable_get('thingy', 0) == 1) {
        $data = array(
           'q'=>$_GET['q'],
           'memory'=>memory_get_peak_usage(),
           'execution_time'=>$diff
        );
        db_query('INSERT INTO {blah} (q,memory,dt,execution_time) VALUES (\'%s\',%b,UNIX_TIMESTAMP(),%b)',$data);
    }

$ Diff değeri bazen sürekli bir INT taşma değeri 2147483647 olarak veritabanına kaydedilir alacak, PHP, inanıyorum. Ben Watchdog yoluyla değerini oturum açtığımda ben 2147483647 ayarlanmış almaz onaylamak, ama üç basamaklı bir tam sayı olduğu, gerçek değeri olabilir.

(Günlük teyit) Tipik değerler:

  • 708
  • 408
  • 413

Execution_time kolon int (11) 'dir.

Ben bu sorunun kaynağını bulmak için görünmüyor olabilir. Ben denedim şeyler:

0 Cevap