PHP / MySQL sorgu karakter sınırı?

0 Cevap php

Aşağıdaki gibi Yani nispeten uzun bir sorgu var:

SELECT (
    (CASE Methanethiol 
        WHEN -1 THEN 0
        ELSE Methanethiol
    END)
    +
    ...
    +
    (CASE nHeptanethiol
        WHEN -1 THEN 0
        ELSE nHeptanethiol
    END)
)
FROM condensates.mercaptans
WHERE (
    (CASE Methanethiol
        WHEN -1 THEN 0
        ELSE Methanethiol
    END)
    +
    ...
    +
    (CASE nHeptanethiol
        WHEN -1 THEN 0
        ELSE nHeptanethiol
    END)
) IS NOT NULL

Sorun sorgu MySQL admin mükemmel çalışıyor, ancak PHP ben daha sonra 4 sütun eklediğinizde yutabilir gibi görünüyor ve bana bir NULL sonuç vermesidir. Herhangi bir ipucu? Ayrıca, ben sadece tüm SEÇ parametresi için NOT NULL koşul belirlemek yerine tekrar dışarı kopyalama için bazı kolay yolu eksik?

EDIT: istenen aşağıdaki gibidir, bu sorgu çağırır PHP ...

İlk işlev çağrısı:

$ Mr = avg (sorgu ($ özellik, 'mekaptanlar', $ tarih ['mostRec']), $ özelliği);

: Sorgu ve avg olarak tanımlanan yerlerde

function avg($query, $colName){
    $iter=0;
    $sum=0;
    while($row = mysql_fetch_array($query)) {
        if($row[0]!==NULL){
            $iter++;
            $sum += ($row[$colName]==-1) ? 0 : $row[$colName]; 
        }
    }
    mysql_free_result($query);

    if ($iter==0)
        return '-';
    else {
        $avg = ($sum / $iter);
        if(lessThanMDL($avg, $colName))
            return 'ND';
        else
            return $avg;
    }
}

function query($selectWhat, $fromTable, $sampleIDs,$orderBySampIDAsc='false'){
    $query = "SELECT ";
    $query .= mysql_real_escape_string($selectWhat);
    $query .= " FROM ";
    $query .= mysql_real_escape_string($fromTable);
    if(count($sampleIDs) >= 1) {
        $query .= " WHERE (";
        $iter=0;
        while($iter < count($sampleIDs)-1){
            $query .= "(SampleID=" . >mysql_real_escape_string($sampleIDs[$iter]) . ") OR ";
            $iter++;
        }

        $query .= "(SampleID=" . >mysql_real_escape_string($sampleIDs[$iter]) . "))";
        $query .= " AND " . mysql_real_escape_string($selectWhat) . " IS NOT NULL";
    } else {
        $query .= " WHERE SampleID=0"; # always returns nothing
    }

    if($orderBySampIDAsc=='true')
        $query .= " ORDER BY SampleID ASC";

    global $condensatesdb;
    return mysql_query($query, $condensatesdb);
}

Maalesef o kadar aralıklı oluyor - Ben başka türlü biçimlendirilmiş almak için görünmüyor olabilir. Her neyse, bu kod sayfada 30 diğer sorgulara muhtemelen yakın çalışıyor, ama sadece bu biri için başarısız olur.

0 Cevap