J'ai une requête relativement longue comme suit:Limite de caractères de la requête PHP/MySQL?
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
Le problème est que la requête fonctionne parfaitement bien dans MySQL admin, mais PHP semble étouffer quand j'ajouter plus de 4 colonnes et donne moi un résultat nul. Des conseils? De plus, ai-je manqué un moyen simple de définir simplement la condition NOT NULL pour l'ensemble du paramètre SELECT plutôt que de le copier à nouveau?
EDIT: Comme demandé, le PHP qui appelle cette requête est la suivante ...
premier appel de fonction est:
$ mr = taux moyen (requête (propriété $, 'mercaptans', $ dates ['mostRec']), $ propriété);
Où requête et avg sont définis comme:
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);
}
Désolé, il est tellement espacé - je ne peux pas sembler obtenir formaté autrement. Quoi qu'il en soit, ce code fonctionne probablement dans une trentaine d'autres requêtes sur la page, mais échoue juste pour celui-ci.
Ce sont les mercaptans! – Smandoli
Je ne suis pas ... – JKB
Simplement une blague. Désolé de ne pas avoir la réponse pour vous si. – Smandoli