Veröffentlicht 19. Februar 200322 j Hallo, ich beschäftige mich erst seit ein paar Tagen mit PHP und habe mal eine Frage bezüglich einer SQL-Anweisung. Vorweg, die Datenbankverbindung steht, mit einfachen SQL-Anweisungen gibt es keine Probleme. Füge ich jedoch dem SQL-Query 'If-Anweisungen' hinzu, murrt mich PHP ständig an. $month2 = 11; $year2 = 2002; $day2 = 27; $rst = mssql_query("SELECT YEAR(datetime)AS year, MONTH(datetime) AS month if (month2 = 00) { ,1 as day; else { ,DAY(datetime) AS day; } ,COUNT(DISTINCT c_ip) AS besucher, COUNT(c_ip) AS zugriffe FROM vwn_statistik.dbo.tblStatistik WHERE ActiveId = 3 GROUP BY MONTH(datetime), YEAR(datetime) if (month2 != 00) { ,DAY(datetime); } HAVING (if month2 != 00) { month(datetime) = month2; And } year(datetime)= year2 ORDER BY YEAR(datetime) DESC, MONTH(datetime) DESC if (month2 != 00) { ,day(datetime) DESC; }"); while($vwn_statistik = mssql_fetch_array ($rst)) { echo $vwn_statistik ["zugriffe"] ; } Fehlermeldungen: Warning: mssql_query() [function.mssql-query]: message: Line 3: Incorrect syntax near '{'. (severity 15) in D:\wwwroot\vwn-intranet\test-ulf\test.php on line 141 Warning: mssql_query() [function.mssql-query]: message: Line 15: Incorrect syntax near '{'. (severity 15) in D:\wwwroot\vwn-intranet\test-ulf\test.php on line 141 Warning: mssql_query() [function.mssql-query]: message: Line 18: Incorrect syntax near ')'. (severity 15) in D:\wwwroot\vwn-intranet\test-ulf\test.php on line 141 Warning: mssql_query() [function.mssql-query]: message: Line 25: Incorrect syntax near '{'. (severity 15) in D:\wwwroot\vwn-intranet\test-ulf\test.php on line 141 Warning: mssql_query() [function.mssql-query]: Query failed in D:\wwwroot\vwn-intranet\test-ulf\test.php on line 141 Warning: mssql_fetch_array(): supplied argument is not a valid MS SQL-result resource in D:\wwwroot\vwn-intranet\test-ulf\test.php on line 143
19. Februar 200322 j Kurz gesagt: fang mit: $rst = "SELECT BLABLABLA"; if(Anweisung) { $rst.="SQLStatementerweiterung"; } . . . usw. Dann dürften keine Fehler mehr auftreten, und sauberer ist der Code dann allemal. Am Fehlerunanfälligsten (und vermutlich am saubersten) ist das Ganze, wenn du die Abfragen bei jeder Bedingung komplett zusammensetzt. MfG
19. Februar 200322 j Sauber jetzt klappt's. Werde den richtige Syntax mal posten: <? $day2=27; $month2=11; $year2=2002; $activeId=0; $sql = " SELECT YEAR(datetime)AS year,MONTH(datetime) AS month, COUNT(DISTINCT c_ip) AS besucher, COUNT(c_ip) AS zugriffe"; if ($month2 == "00"){ $sql .= ", 1 as day"; }else{ $sql .= ", DAY(datetime) AS day"; } $sql .= ", COUNT(DISTINCT c_ip) AS besucher, COUNT(c_ip) AS zugriffe FROM vwn_statistik.dbo.tblStatistik WHERE ActiveId= 3 GROUP BY MONTH(datetime), YEAR(datetime)"; if ($month2 <> "00"){ $sql .= ", DAY(datetime)"; } $sql .= " HAVING year(datetime)= year2"; if ($month2 <> "00"){ $sql .= " AND month(datetime) = month2"; } $sql .= " ORDER BY YEAR(datetime) DESC, MONTH(datetime) DESC"; if ($month2 <> "00"){ $sql .= " , day(datetime)"; } echo $sql; ?> [/PHP] Wunderbar, jetzt kann es weitergehen:marine
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.