2009-08-26 9 views
0

Meine Frage ist, wie kann ich sicher sein, dass eine Zeile, die ich zurückgeben möchte, existiert? Ich möchte es nicht mit PHP @ Option unterdrücken oder Zeilen vor jeder Abfrage zählen, um herauszufinden, ob die Zeile existiert oder nicht.Wie kann ich MySQL 'Unable to Zeile 0' Fehler entkommen?

So gibt es eine einfache Abfrage wie folgt:

"SELECT `title`, `id` FROM `event` WHERE `id` = '234'"; 

und die Tabelle die Zeile mit id 234 nicht enthalten.

Antwort

0

Du bist wahrscheinlich mysql_result() mit den Feldern zu holen. Betrachten Sie stattdessen mysql_fetch_array. Es gibt FALSE zurück, wenn keine weiteren Zeilen mehr abzurufen sind.

<?php 
$mysql = mysql_connect('..', '..', '..') or die(mysql_error()); 
mysql_select_db('..', $mysql) or die(mysql_error()); 

$query = "SELECT `title`, `id` FROM `event` WHERE `id` = '234'"; 
$result = mysql_query($query, $mysql) or die(mysql_error()); 
$row = mysql_fetch_array($result, MYSQL_ASSOC); 

if (!$row) { 
    echo 'no such record'; 
} 
else { 
    echo $row['title'], ' ', $row['id']; 
} 
+0

Gotcha! Danke für die Hilfe, die das Problem war! Sonst was ist der Punkt in mysql_result, wenn mysql_fetch_array besser funktioniert? – fabrik

+0

Ich verwende fast immer fetch_array, die einzige Ausnahme sind Abfragen, die garantiert genau einen Datensatz und ein oder zwei Felder zurückgeben (oder ganz fehlschlagen), wie zB SELECT Count (*) FROM xyz In diesem Fall benutze ich manchmal mysql_result() ... "habe verwendet" seit I benutze kein php/mysql mehr als pdo ;-) – VolkerK

+0

Danke für die Erklärung. Ja, COUNT ist ein typischer mysql_result-Abfragetyp und ich dachte, dass ich die Belastung von MySQL reduzieren kann, wenn ich mysql_result benutze, so oft ich kann. Mein Fehler ist, dass die fragliche Seite stark mit mysql_result arbeitet, also muss ich meine Abfragen überprüfen, um Konflikte zu eliminieren, die durch verschiedene Abfragemethoden verursacht werden. – fabrik

1

Sie müssen Zeilen nicht vor jeder Abfrage zählen - im Allgemeinen tun Sie es nach.

Was ist so etwas wie dieses

$query = "SELECT `title`, `id` FROM `event` WHERE `id` = '234'"; 

$results = mysql_query($query); 

if (mysql_num_rows($results)) { 
    // do something because it was found 
} 
+0

Dies ist die einfachste Lösung, aber etwas ist falsch, weil es Fehler auf Abfragen, die zuvor gut funktioniert hat, wirft. :( – fabrik

+0

Können Sie einige der Code, der jetzt Fehler ist? – alex

Verwandte Themen