그래서 나는 비교적 긴 쿼리를 가지고 :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 ...
먼저 함수 호출은 다음과 같습니다
$ 씨 = 평균 (쿼리 ($ 속성, '메르 캅탄' $ 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
나는 따르지 않는다 ... – JKB
단지 농담. 죄송하지만 당신을 위해 대답을하지 못했습니다. – Smandoli