所以我有一个比较长的查询,如下所示: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
的问题是,查询工作完全正常的MySQL管理,但PHP似乎呛到,当我添加更多然后4列,并给出我一个NULL结果。有小费吗?另外,我错过了一些简单的方法来简单地为整个SELECT参数设置NOT NULL条件而不是将其复制出来吗?
编辑:按照要求,调用此查询是如下的PHP ...
第一个函数调用是:
$ MR = AVG(查询($属性, '硫醇', $ dates ['mostRec']),$ property);
在哪里查询和平均被定义为:
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);
}
抱歉它是如此间隔了 - 我似乎无法得到它,否则格式化。无论如何,这段代码的工作原理可能接近30个页面上的其他查询,但仅针对这一个。
它的硫醇! – Smandoli 2010-08-16 18:22:22
我不关注... – JKB 2010-08-16 18:24:02
只是一个笑话。对不起,没有你的答案,但。 – Smandoli 2010-08-16 18:24:44