所以我有一個比較長的查詢,如下所示: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