2012-04-10 12 views
0
<?php 
class Page { 
    function getPage($urlOfPage){ 
     $result = mysql_query('SELECT category, title FROM rs-planet WHERE url = "'. mysql_real_escape_string($urlOfPage)); 
     if(mysql_num_rows($result) === 0){ 
      header('HTTP/1.0 404 Not Found'); 
      exit; 
     } 
     else{ 
      return $page[] = mysql_fetch_array($result); 
     } 
    } 
} 

?> 

Und ich habe diese Fehler:PHP: mysql Abfrage gibt eine boolean

Warning: mysql_num_rows() erwartet Parameter 1 seine Ressource, boolean in C gegeben: \ xampp \ htdocs \ rs- Planeten \ classes \ page.php on line 6

Warning: mysql_fetch_array() erwartet Parameter 1 Ressource, boolean in C angegeben werden: \ xampp \ htdocs \ rs-Planeten \ classes \ page.php auf Leitung 11 Und ich sehe das Problem nicht ...

Und wenn ich var_dump @ $ Ergebnis bekomme, bekomme ich einen Boolean. (Wenn es @ db gegründet ist, gibt es wahr, wenn es nicht ist, gibt es mich falsch.)

PS. Sorry für mein schlechtes Englisch, meine Hauptsprache ist Niederländisch.

EDIT: var_dump (mysql_error) =

string (152) „Sie haben einen Fehler in der SQL-Syntax, kontrollieren das Handbuch , die für die richtige Syntax zu Verwendung zu Ihrem MySQL-Server-Version entspricht . in der Nähe von '"Index' in Zeile 1"

+1

'var_dump (mysql_error());' – zerkms

+1

Keine Schließung Anführungszeichen für die URL-Zeichenfolge-Wert in der SQL-Abfrage ... wenn die Menschen lernen, ihre SQL-Abfragen zu debuggen, selbst wenn sie es nicht können überzeugt sein, in das 21. Jahrhundert einzutreten und vorbereitete Aussagen zu verwenden –

+0

Yup. Vorbereitete Aussagen sind ein Geschenk der SQL Götter - BENUTZEN SIE. :) –

Antwort

2

mysql_query gibt false zurück, wenn die Abfrage (dh schlechte Syntax) nicht ausgeführt werden kann Versuchen rs-planet mit Backticks Umgebung:

$result = mysql_query('SELECT category, title FROM `rs-planet` WHERE url = "'. mysql_real_escape_string($urlOfPage) . '"'); 

Ich denke, die - in der Tabellenname ist Verschrauben die Syntax.

BEARBEITEN: Auch PDO macht es viel einfacher, diese Probleme zu debuggen, da Sie nicht mysql_error() verwenden müssen, um die Fehlermeldung zu erhalten - es ist in der Ausnahme enthalten, die von PDO ausgelöst wird. http://php.net/manual/en/book.pdo.php

ZWEITE BEARBEITUNG: Eigentlich ist das Problem wahrscheinlich das fehlende Zitat. Korrigiert meinen Code, aber sehen Sie die anderen Antworten ...

+0

Die Abfragesyntax ist nicht gut, es fehlt das Schließen-Zitat. – dotancohen

+0

@citicenen Eigentlich ist das fehlende Zitat wohl das Problem, wie in den anderen Antworten vermerkt. –

+0

Jetzt gibt es eine Zeichenfolge zurück ... –

1

mysql_query gibt false auf einen Fehler zurück.

Sie haben WHERE url=", aber kein schließendes Zitat nach der URL-Zeichenfolge.

1

mysql_query gibt im Fehlerfall FALSE zurück. Ihr Fehler besteht darin, dass Sie das Zitat in Ihrer Abfrage nicht schließen. Versuchen Sie folgendes:

 $result = mysql_query('SELECT category, title FROM rs-planet WHERE url = "'. mysql_real_escape_string($urlOfPage).'"'); 
+0

Es funktioniert nicht ... –

+0

Welches Ergebnis hast du bekommen? – dotancohen

+1

Versuchen Sie auch 'return $ page' anstelle von' return $ page [] '. Das erste wird das Array von mysql_fetch_array zurückgeben, das zweite wird das Array von mysql_fetch_array im ersten Element des Array $ page zurückgeben. – dotancohen