使用PHP和SQLite 500内部服务器错误

时间:2014-05-30 18:24:14

标签: php sqlite

我有一段代码来查询数据库并返回结果。代码工作正常,然后在更新sqlite数据库后,PHP代码保持不变,我得到500内部服务器错误。

如果我在行" $ count ++"之后返回,则不会发生此错误。因此,错误是在while循环的第二次或更多次迭代中引起的。

我还可以确认查询是有效的 - 我能够使用Python SQLite API离线查询和返回数据。

听起来数据库已损坏。数据库花费了30多个小时来填充数据,所以我想知道是否有可以绕过这个,或以其他方式修复数据。

*注意 - $ this-> db是扩展SQLite3类的实例。

function getFeatureFrequencySeries($product_id, $feat) {

    $ret = array();
    $scope = "product_id = " . $product_id . " AND feature = '" . $feat . "'";
    $result = $this->db->query("SELECT score, weighted_score, frequency, start_date FROM features WHERE " . $scope . " ORDER BY start_date");
    $count = 0;
    while ($res = $result->fetchArray(SQLITE3_ASSOC)) {
        $norm = (float)$this->getNormFactor($product_id, $res['start_date']);
        $ret[] = array('score' => (int)$res['score'], 'weighted_score' => (int)$res['weighted_score'], 'frequency' => (int)$res['frequency'], 'norm_factor' => $norm, 'date' => $res['start_date']);
        $count++;
    }
    return $ret;
}

function getNormFactor($product_id, $start_date){

    $scope = "product_id = " . $product_id .  " AND start_date = '" . $start_date . "'";
    $result = $this->db->query("SELECT sum(frequency) as revcount FROM features WHERE " . $scope . " GROUP BY start_date");
    if ($res = $result->fetchArray(SQLITE3_ASSOC)){
        return (float)$res['revcount'];
    } else {
        return 0;
    }
}

在PHP脚本的顶部,我有:

error_reporting(-1); // reports all errors
ini_set("display_errors", 'On'); // shows all errors
ini_set("log_errors", 1);
ini_set("error_log", "[FULLPATH_IS_HERE]/missing.html");

在我的.htaccess中:

# enable PHP error logging
php_flag  log_errors on
php_flag display_errors 1
php_value error_log  [FULLPATH_IS_HERE]/missing.html

日志中没有任何内容。

结果:

  

内部服务器错误

     

服务器遇到内部错误或配置错误,无法完成>您的请求。

     

请与服务器管理员webmaster@trendminingdesign.net联系,并告知他们错误发生的时间,以及您可能做过的任何可能导致>错误的事情。

     

服务器错误日志中可能提供了有关此错误的更多信息。

     

此外,尝试使用ErrorDocument>处理请求时遇到404 Not Found错误。

0 个答案:

没有答案