PHP MYSQL ID vergleich

05/06/2014 17:51 .Like#1
Hallo leute,
ich habe in eingabe feld in dem eine ID eingelesen wird.Das Eingabefeld etc. funktioniert auch, wenn ich eine ID eintrage wird diese automatisch in die Tabelle eingefügt.
Aber falls die ID mit der ID aus der tabelle übereinstimmt soll eine Fehlermeldung erscheinen.

Mein Code lautet wie folgt :

PHP Code:
$ID $_POST["username"];
$id2 "SELECT `id` from Tabelle1 where id = $ID";
$id3 mysql_query($id2);
$id4 mysql_fetch_array($id3);
if (
$ID == $id4){
    echo (
"ID BEREITS VORHANDEN !");

Es erscheint auch keinerlei Fehlermeldung, es funktioniert einfach nicht.
05/06/2014 18:19 Mostey#2
$id4 ist zu diesem Zeitpunkt wahrscheinlich ein Array. Du vergleichst ein Array mit einem Integer, da wird die Bedingung natürlich nie true sein.

Du solltest dem Array die Zahl vorher entnehmen, in deinem Fall wäre das Index 0 weil du nur eine Eigenschaft ausgewählt hast und man nunmal bei 0 anfängt zu zählen.
05/06/2014 18:24 pr0Cellarum#3
Eieiei, danke Mostey, ich bin wohl schon zu framework-verwöhnt...
Habe mir eben noch einmal die Definition der Funktion durchgelesen und es auch bemerkt ^^

Ich bin nur auf mysql_* eingegangen weil OP das auch verwendet ;)
05/06/2014 18:28 Mostey#4
Quote:
Originally Posted by pr0Cellarum View Post
^ oder

PHP Code:
$ID     mysql_real_escape_string($_POST["username"]); 
$query  "SELECT `id` from Tabelle1 where id = $ID"
$result mysql_query($query); 

if (!
$result) {
    echo (
"ID BEREITS VORHANDEN !");

Tante Edit ist gerade wedelnd mit ihrem Gehstock zu dir unterwegs und will dich verhauen, weil du den input nicht filterst ;)

[Only registered and activated users can see links. Click Here To Register...]
Das ist falsch.

$result ist nur false, wenn in der Query etwas schief ging, wenn du also einen MySQL Fehler bekommst. Ist die Query in Ordung, wird trotzdem ein Resultset zurückgeben, auch wenn keine Ergebnisse enthalten sind.

Da sollte man dann mit mysql_num_rows prüfen, ob Einträge vorhanden sind.

Btw. fällt mir auch gerade auf das mysql_* seit PHP 5.5 deprecated ist und daher nicht mehr genutzt werden sollte. Schau dir mal mysqli an.

€: Das mit dem mysqli ging an den TE, nicht an dich @pr0Cellarum
05/06/2014 18:32 .Like#5
Hey Mostey, wie entnehme ich der Array denn die Variable?
05/06/2014 18:40 Mostey#6
Quote:
Originally Posted by .Like View Post
Hey Mostey, wie entnehme ich der Array denn die Variable?
[Only registered and activated users can see links. Click Here To Register...]

Schau dir bitte mal die Basics über Arrays an.

Kleiner Tipp noch: Mit der Funktion var_dump kannst du dir das Array und deren Inhalt genau anschauen.
05/06/2014 19:00 .Like#7
Leider bin ich mit den Arrays nicht vorran gekommen, eine Lösung habe ich abert trotzdem gefunden.

PHP Code:
$id2 "SELECT `id` from Tabelle1 where id = $ID";
$id3 mysql_query($id2);
$id4 mysql_num_rows($id3);
IF (
$id4 == 1){
    echo (
"ID IST BEREITES VERGEBEN!");

05/06/2014 21:35 Mikesch01#8
Hier eine bessere/andere Lösung:
PHP Code:
$ID mysql_real_escape_string($_POST['username']);
$sql mysql_query("SELECT `id` FROM Tabelle1 WHERE `id` = '".$ID."'");
$row mysql_fetch_assoc($sql);
if(
$row['username'] == $ID){
    echo (
"ID IST BEREITES VERGEBEN!");