PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Select Syntax fehlerhaft (http://www.selfphp.de/forum/showthread.php?t=23433)

Klarissa 13.07.2010 14:38:27

Select Syntax fehlerhaft
 
Hallo, Selfphp-Gemeinde,

ich kann den Fehler nicht finden. Die Abfrage holt alle Ergebnisse in den Browser wie gewünscht, wenn die Limit Funktion nicht enthalten ist. Ich weiß einfach nicht, wie die Syntax lauten muß, und mit den mysql / php manualen verstehe ich es leider auch nicht.

Datenbankverbindung steht; anbei das generelle Such-Statement:
PHP-Code:

// grundlegendes Select Statement
    
    
$proseite =2;
    
$start $_GET['page'] * $proseite-$proseite;

    
$select 'Select distinct ID, Code, Text_gr, Title_gr, City_gr, Icon1, Icon2, Icon3, Icon4, Icon5' ;
    
$from ' from objects';
    
$where ' where 1=1';
    
$rand ' ORDER by rand()';
    
$lim =  "LIMIT($start, $proseite)"

nachfolgend das grundlegende Select Statement in der Ausführung:

PHP-Code:


$sql 
= ($select $from $where $rand);
$result mysql_query($sql);
$number mysql_num_rows($result);

echo
" Anzahl Objekte: $number <br />"// Ausgabe korrekt, ok

$start $_GET['page']* $proseite-$proseite;  // Ausgabe korrekt, alles ok
echo" START: $start <br />";

$seiten ceil($number/$proseite);

echo 
"Seitenanzahl: $seiten <br />";  // Ausgage korrekt, alles richtig


// hier nun die Query MIT der Variablen $lim, damit die Paginierung durchgeführt werden kann
 
    
$sql = ($select $from $where $rand $lim); //meint: suchen inkl. Kriterien, plus Angabe, wieviele Ergebnisse pro Seite gezeigt werden sollen

    
echo "<br />Die Abfrage lautet:  $sql<br />"//Query wird ausgeben
    
echo "Das Limit soll sein: $lim <br /><br />";//Das Limit wird angezeigt
    
$result = @mysql_query($sql);        //Die Query wird nochmals gezeigt mit 
    
echo mysql_error();                       //echo mysql_error()
    
echo"<br />";
var_dump($sql$result );
    echo
" <br /><br /> Result: $sql <br />";


 
//hier nochmal nachdenken:
 
$ende $start $proseite;
    if (
$ende $number) { $ende $number; }
    
    echo 
"<br />Seitenende nach <u>$ende</> Objekten <br />"// die Ausgabe ist richtig 

Die Fehlermeldung im Browser ist wie folgt:

HTML-Code:

Anzahl Objekte: 8
START: 0
Seitenanzahl: 4

Die Abfrage lautet: Select distinct ID, Code, Text_gr, Title_gr, City_gr, Icon1, Icon2, Icon3, Icon4, Icon5 from objects where 1=1 ORDER by rand()LIMIT(0, 2)
Das Limit soll sein: LIMIT(0, 2)

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(0, 2)' at line 1
string(137) "Select distinct ID, Code, Text_gr, Title_gr, City_gr, Icon1, Icon2, Icon3, Icon4, Icon5 from objects where 1=1 ORDER by rand()LIMIT(0, 2)" bool(false)

Result: Select distinct ID, Code, Text_gr, Title_gr, City_gr, Icon1, Icon2, Icon3, Icon4, Icon5 from objects where 1=1 ORDER by rand()LIMIT(0, 2)

Seitenende nach 2 Objekten

Die Abfrage bringt alle gewünschten Ergebnisse, wenn kein Limit gesetzt wird.

Ich würde mich sehr freuen, wenn einer im Forum mir auf die Sprünge helfen könnte (ich versuche nun schon seid einer Woche, den Fehler zu beheben - wahrscheinlich wird es etwas absolut Dummes sein - ich sehe es aber leider nicht).

Vielen Dank schon jetzt einmal - ich hoffe auch, daß ich hier richtig gepostet habe
und LG
Klarissa

knight1 13.07.2010 15:52:35

AW: Select Syntax fehlerhaft
 
Ändere mal dieses
Zitat:

Zitat von Klarissa (Beitrag 137292)
...
PHP-Code:

.
.
.
    
$lim =  "LIMIT($start, $proseite)"

...

gegen dieses

PHP-Code:

.
.
.
    
$lim =  "LIMIT ".$start.", ".$proseite.""

Also, LIMIT wird ohne Klammern verwendet.


Kai aka Knight1

asipak4you 13.07.2010 15:52:49

AW: Select Syntax fehlerhaft
 
Spendier' der Abfrage noch ein Leerzeichen.

[edit] Oh, das Leerzeichen vor LIMIT scheint gar nicht notwendig zu sein. Besser ist es trotzdem, wenn anstelle einer MySQL-Funktion wie RAND() mal ein Spaltenname ohne Backticks an dieser Stelle steht. Naja, knight1 hat dich ja schon auf die Klammern hingewiesen.

Klarissa 13.07.2010 16:23:31

AW: Select Syntax fehlerhaft
 
Knight1,

DANKE!!!!! Das war es!
Nun komme ich endlich weiter!

Nochmals ein riesiges Dankeschön

Klarissa

Klarissa 13.07.2010 16:28:09

AW: Select Syntax fehlerhaft
 
asipak4you!

Danke auch für Deine Antwort, - und überhaupt,

vielen Dank an alle, die
1. geantwortet haben,
2. den Threat nicht (wegen Dummheit der Frage) irgendwohin verschoben haben!! (das kann einem passieren, ich spreche aus Erfahrung, und habe mich daraufhin 19 Tage lang nicht mehr getraut, die Frage nochmals im www zu stellen)

Deswegen allen nochmals ein großes Dankeschön!

Eure Klarissa

PS. Wie erkäre ich das Thema als erledigt?

cortex 13.07.2010 16:51:46

AW: Select Syntax fehlerhaft
 
hallo Klarissa,

Zitat:

Zitat von Klarissa (Beitrag 137296)
2. den Threat nicht (wegen Dummheit der Frage) irgendwohin verschoben haben!! (das kann einem passieren, ich spreche aus Erfahrung, und habe mich daraufhin 19 Tage lang nicht mehr getraut, die Frage nochmals im www zu stellen)

threads werden (bei uns) i.a. nur verschoben, um die thematische gliederung des forums zu pflegen. schade, dass du diese erfahrung gemacht hast, denn deine frage war sehr vorbildlich aufgebaut:

- das problem wurde ausführlich beschrieben
- das betreffende script wurde gezeigt
- die (vollständige) fehlermeldung wurde nicht verheimlicht
- die code-Tags wurden verwendet

das ganze in gutem deutsch; rechtschreibung, grammatik, ausdruck 1a - ich wünschte, das würde viel häufiger so laufen .-)

Zitat:

Zitat von Klarissa (Beitrag 137296)
Wie erkäre ich das Thema als erledigt?

das ist nicht notwendig - unser forum ist nicht so überlaufen und daher recht übersichtlich.

cx


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:26:32 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.