Was ist das zurückgegebene Ergebnis eine SELECT MAX (), wenn die Tabelle leer ist in MySQL?
Ich habe eine Tabelle für Benutzer, Zahlungen. Ich muss zu geben Sie eine Quittung code für jede Transaktion, also muss ich wissen, was war das Letzte? Und wenn es keinen vorherigen Zugang, möchte ich hinzufügen, dass der erste mit 1000 und andere reciepts muss inkrementellen wie 1001, 1002, ...
Dazu schrieb ich diesen code:
$receipt = '1000';
$query_receipt = mysql_query("SELECT MAX(receipt) FROM tbl_payments");
$max = mysql_result($query_receipt,0);
if ($max != '0' || $max != '')
{
$receipt = mysql_result($query_receipt,0) + 1;
}
Funktioniert es einwandfrei, wenn ich einen Datensatz in der Tabelle. Aber es gibt 1, wenn die Tabelle leer ist. Wie kann ich dieses problem lösen? Ich muss wissen, ist der zurückgegebene Wert aus einer SELECT MAX() ...
auch wenn die Tabelle leer sein.
- Wenn Sie brauchen, ein Wert, der erhöht für jede hinzugefügte Zeile, die Sie verwenden sollten eine auto-Inkrement Spalte, anstatt zu versuchen zu generieren-ids.
- Was brauchst du genau? Sie donot erwarten 1. Dann, was ist Ihre erwartete Ausgabe, wenn die Tabelle leer ist ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erreichen dies durch die Verwendung
IFNULL
als:Erhalten Sie einen null-Wert:
Sie können jedoch ein verschmelzen Sie zu bekommen, was Sie brauchen:
Bearbeiten: Wenn Sie sind auf der Suche, um es zu überprüfen der Benutzer hat bereits eine-und wenn nicht, um eine neue Zeile einzufügen, es nicht getan werden kann mit einer einzigen Abfrage, soweit ich weiß, aber Folgendes sollte funktionieren:
In diesem Sinne, möchten Sie vielleicht zu prüfen, Weg von dem alten veraltet
mysql_*
Funktionen und zu bewegen, um PDO statt. Es ist viel sicherer und hat viel mehr features.Ich würde auch empfehlen, um einen auto_increment-Wert, und bestimmen Sie Ihre aktuelle Belegnummer durch die insert_id. Führen Sie einfach Ihre
INSERT
-Abfrage und danach zum Beispiel mysqli_insert_id, um die id der eingefügten Zahlung.Wenn Sie möchten, beginnen Sie mit einem Wert von 1000, können Sie ändern Sie den Wert start Ihrer auto-increment-Spalte. Ich fand das einrichten, die "auto increment" zu starten mit 1000
Den unten arbeiten sollten, wie Sie Ihre insert-Anweisung. Keine Notwendigkeit, die PHP verwenden, um zwei Abfragen wie oben, Sie können das gleiche Ergebnis direkt in MYSQL.