PHP MySQL Abfrage NULL zurückgeben

Ich habe eine MySQL Tabelle, die so aussieht:

index  |  tag  |  posts
-------------------------
  1    | cats  |   9,10
  2    | a cat |   9,10
  3    | kitty |   9,10
  4    | meow  |   9,10

Ich versuche einfach nur wieder die Zeile, die mit a search query.
Ich übergeben die parameter für die Suche mit einem einfachen ?search=cats.
Dies ist das PHP, dass ich mit:

$search = $_GET['search'];
$query  = mysql_query("SELECT * FROM tags WHERE tag = '$search'");
echo(mysql_num_rows($query));
$result = mysql_fetch_array($query);
$print  = $result['posts'];
echo($print);

Jedoch die mysql_num_rows($query) druckt 0 und die $print NULL zurück. Kann ich dies mit ($print == "") es wird zu TRUE ausgewertet, und der mysql_num_rows($query) gibt 4.
Ich habe versucht, die Suchanfrage zu etwas, dass nicht in der Tabelle und es umgestimmt, FALSE, wie erwartet. Ich habe auch versucht, das entfernen der WHERE tag = '$search' und es gibt die Tabelle, wie es sein sollte.

Gibt es etwas, was ich im Blick?

Bearbeiten

Nahm jeden Tipp und den code, den ich jetzt verwende ist:

$search = mysql_real_escape_string($_GET['search']);
var_dump($search); //prints   string(4) "cats"   just like it should
$queryText = "SELECT * FROM tags WHERE tag = '%".$search."%'";
echo($queryText); //SELECT * FROM tags WHERE tag = '%cats%'
$query  = mysql_query($queryText) or die(mysql_error()); //no error
$rows   = mysql_num_rows($query); //this returns 0 and I know it should match 1 row
echo('rows: '.$rows);
$result = mysql_fetch_array($query);
$print  = $result['posts'];
echo($print); //empty

Immer noch das gleiche problem. Die mysql_query ist wieder NULL statt der Zeile oder FALSE, wenn es nicht mit.

(in Zukunft werde ich das mysqli - API, aber ich würde gerne Finnisch, dieses Projekt in mysql. vielen Dank für Ihre Anregungen und Ratschläge)

  • 2 Dinge: 1. echo nach $Suche = $_GET['Suche']; dass in der Tat mit dem Suchbegriff gefüllt war. 2. ändern Sie die Abfrage $Abfrage = mysql_query("SELECT * FROM tags WHERE tag = '$Suche'") or die(mysql_error()); und sagen Sie uns, was ist der output.
  • Herzlich willkommen auf Stack Overflow! Bitte verwenden Sie nicht mysql_* Funktionen im neuen code. Sie werden nicht mehr gepflegt und sind offiziell deprecated. Siehe die red box? Erfahren Sie mehr über prepared statements und PDO oder MySQLi - diesem Artikel wird Ihnen helfen, entscheiden, welche. Wenn Sie PDO, hier ist ein gutes tutorial.
  • Stellen Sie sicher, Sie wissen GENAU, was an den MySQL server gesendet. $queryText = "SELECT * FROM tags WHERE tag = '$search'"; print($queryText); Auch versuchen, indem or die(mysql_error); auf der gleichen Linie wie die mysql_query().
  • denken Sie daran die Funktion mysql_real_escape_string()
  • Danke, ich werde ihn in Erinnerung behalten.
  • Ich überprüfte $_GET['search'] und es war in der Tat, was ich wollte, es zu sein. Ich habe auch or die(mysql_error()), aber es wurden keine Fehler zurückgegeben. vielen Dank für die Hilfe.

InformationsquelleAutor thunder618 | 2013-02-01
Schreibe einen Kommentar