Abfrage ob Name in DB vorhanden ist, wenn ja dann UPDATE, wenn nein dann INSERT
Abfrage ob Name in DB vorhanden ist, wenn ja dann UPDATE, wenn nein dann INSERT
Hallo
ich stehe da mal wieder vor einem kleinen Problem:
ich möchte eine INSERT oder UPDATE Abfrage ausführen lassen, in Abhängigkeit ob es einen Namen in der DB schon gibt, oder nicht. Ich dachte mir ich mache das mit einer count Abfrage ?
Geht das überhaupt ?
Also der Code lautet wie folgt:
Der Inhalt der Variable "$NAME_db" kommt natürlich aus einem Formular. ich habe das mit einem echo probiert, der Wert für Name wird auch übertragen bis zur Abfrage $result.
Die Abfrage gibt mir immer die Fehlermeldung "keine gültige DB Abfrage !!!" zurück, also kommt das Programm noch nichtmals zum INSERT oder zum UPDATE.
Könnte die Abfrage mit dem SELECT count schon falsch sein, kann man den Inhalt des Feldes NAME als anzahl in einem count schreiben, oder geht das nur mit den Datentyp INT ?
Der NAME wäre ja dann ein VARCHAR DATENTYP.
Vielen DANK für Hilfe
Martin
Hallo
ich stehe da mal wieder vor einem kleinen Problem:
ich möchte eine INSERT oder UPDATE Abfrage ausführen lassen, in Abhängigkeit ob es einen Namen in der DB schon gibt, oder nicht. Ich dachte mir ich mache das mit einer count Abfrage ?
Geht das überhaupt ?
Also der Code lautet wie folgt:
<?php include('../Connections/T_index.php');
$NAME_db = $_POST['NAME'];
$result = mysql_query ("SELECT count (NAME) FROM tabelle WHERE NAME = '$NAME_db'");
$res = mysql_query($result) or die ("keine gültige DB Abfrage !!!");
#$row = mysql_fetch_array($res);
if ($count == 0) { //echo"Daten eingetragen<br/>";
$mysql_query = "INSERT INTO tabelle (ID, NAME) VALUES ('','$NAME_db');
$rs = mysql_query($mysql_query) or die ("keine gültige DB Abfrage (INSERT)");
}
else
{ //echo "Daten updaten<br/>";
$mysql_query = "UPDATE Tabelle set NAME='$NAME_db' WHERE NAME = $NAME_db";
$rs = mysql_query($mysql_query) or die ("keine gültige DB Abfrage (UPDATE)");
}
?>
Der Inhalt der Variable "$NAME_db" kommt natürlich aus einem Formular. ich habe das mit einem echo probiert, der Wert für Name wird auch übertragen bis zur Abfrage $result.
Die Abfrage gibt mir immer die Fehlermeldung "keine gültige DB Abfrage !!!" zurück, also kommt das Programm noch nichtmals zum INSERT oder zum UPDATE.
Könnte die Abfrage mit dem SELECT count schon falsch sein, kann man den Inhalt des Feldes NAME als anzahl in einem count schreiben, oder geht das nur mit den Datentyp INT ?
Der NAME wäre ja dann ein VARCHAR DATENTYP.
Vielen DANK für Hilfe
Martin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 44587
Url: https://administrator.de/contentid/44587
Ausgedruckt am: 23.11.2024 um 05:11 Uhr
5 Kommentare
Neuester Kommentar
$result = mysql_query ("SELECT count
(NAME) FROM tabelle WHERE NAME =
'$NAME_db'");
$res = mysql_query($result) or die
("keine gültige DB Abfrage
!!!");
(NAME) FROM tabelle WHERE NAME =
'$NAME_db'");
$res = mysql_query($result) or die
("keine gültige DB Abfrage
!!!");
Ersetzen durch:
$sql = "SELECT count
(NAME) FROM tabelle WHERE NAME =
'$NAME_db'";
$res = mysql_query($sql) or die
("keine gültige DB Abfrage
!!!");
(NAME) FROM tabelle WHERE NAME =
'$NAME_db'";
$res = mysql_query($sql) or die
("keine gültige DB Abfrage
!!!");
Wozu benutzt du 2x mysql_query?
In der ersten Variable wird normalerweise das SQL Statement eingetragen in der zweiten dann der query ausgeführt!
mfg, brc
kleiner hinweis:
Es ist keine gute Idee benutzereingaben ungeprüft direkt in einem SQL Statement zu verwenden - Stichwort SQL Injection
Überleg Dir mal, was passiert wenn ein User
in dein HTML Formular eingibt.
$NAME_db = $_POST['NAME'];
$result = mysql_query ("SELECT count (NAME) FROM tabelle WHERE NAME = '$NAME_db'");
Es ist keine gute Idee benutzereingaben ungeprüft direkt in einem SQL Statement zu verwenden - Stichwort SQL Injection
Überleg Dir mal, was passiert wenn ein User
'; DELETE FROM TABELLE; SELECT * FROM TABELLE WHERE NAME='
in dein HTML Formular eingibt.
$result = mysql_query ("SELECT count (NAME) FROM tabelle WHERE NAME = '$NAME_db'");
Wie das funktionieren soll frag ich mich allerdings!
Du fragst nach wo NAME = $NAME_db ist
Sprich nur wenn in Name $NAME_db drin steht ....
eigentlich müsste es so lauten:
$result = mysql_query ("SELECT count (NAME) FROM tabelle WHERE NAME = ' ".$NAME_db." ' ");
Wie das funktionieren soll frag ich mich allerdings!
Du fragst nach wo NAME = $NAME_db ist
Sprich nur wenn in Name $NAME_db drin steht ....
eigentlich müsste es so lauten:
$result = mysql_query ("SELECT count (NAME) FROM tabelle WHERE NAME = ' ".$NAME_db." ' ");
$result = mysql_query ("SELECT count
(NAME) FROM tabelle WHERE NAME =
'$NAME_db'");
Wie das funktionieren soll frag ich mich
allerdings!
Du fragst nach wo NAME = $NAME_db ist
Sprich nur wenn in Name $NAME_db drin steht
eigentlich müsste es so lauten:
$result = mysql_query ("SELECT count
(NAME) FROM tabelle WHERE NAME = '
".$NAME_db." ' ");
(NAME) FROM tabelle WHERE NAME =
'$NAME_db'");
Wie das funktionieren soll frag ich mich
allerdings!
Du fragst nach wo NAME = $NAME_db ist
Sprich nur wenn in Name $NAME_db drin steht
eigentlich müsste es so lauten:
$result = mysql_query ("SELECT count
(NAME) FROM tabelle WHERE NAME = '
".$NAME_db." ' ");
Nein, dem ist nicht so, denn das doppelten Anführungszeichen erlauben die Ausgabe von Varaiblen mitten im String:
http://tut.php-q.net/strings.html
mfg, brc