MySQL was passiert wenn man WHERE verwendet wenn...?

  • #1
G

Game12

Bekanntes Mitglied
Themenersteller
Dabei seit
07.01.2005
Beiträge
436
Reaktionspunkte
0
Hi,

Ja ich schon wieder aber diesmal nur eine ganz kurze Frage:

was passiert wenn man in MySQL ein UPDATE mit WHERE durchführt es aber garkein Eintrag mit einem solchen Wert gibt?

also z.B.

var soll auf 100 gesetzt werden, wo id = 12, es gibt aber in der Tabelle keinen Eintrag wo id = 12 ist... was passiert?

also 2 Sachen fände ich logisch:

-Es passiert nichts...
-Es wird ein neuer Eintrag mit den Werten erstellt...
 
  • #2
Game12 schrieb:
-Es passiert nichts...

Neuer Eintrag wäre 2x NICHT logisch da:
- die WHERE-Klausel nicht erfüllt ist
- ein Update KEIN Insert ist
;)
 
  • #3
Danke :)
 
  • #4
eine frage noch:

welchen wert liefert

Code:
mysql_query(UPDATE `Datenbank` SET Name =->$set_name' WHERE Nr = $id);

zurück wenn es keinen Eintrag mit Nr = $id gibt?
 
  • #5
Nen Fehler ;)

Wenn, dann musst du in einer Tabelle das Update machen, nicht in der ganzen Datenbank.
Und dann ist es das gleiche wie in deiner ersten Frage ;)
 
  • #6
ja meine Tabelle heißt Datenbank ;D nein, kein Scherz...

also ist

Code:
mysql_query(UPDATE `Datenbank` SET Name =->$set_name' WHERE Nr = $id) =
???

edit:

meine Datenbank heißt game12

edit2:

und welchen wert hat
Code:
mysql_query(UPDATE `Datenbank` SET Name =->$set_name' WHERE Nr = $id);
wenn es einen Eintag mit Nr = $id gibt?
 
  • #7
mysql_query(UPDATE `Datenbank` SET Name =->$set_name' WHERE Nr = $id) =
Das geht eh nicht ;)

Game12 schrieb:
und welchen wert hat
Code:
mysql_query(UPDATE `Datenbank` SET Name =->$set_name' WHERE Nr = $id);
wenn es einen Eintag mit Nr = $id gibt?
Woher soll ich das wissen :2funny:
Natürlich den Wert der in der Variablen $set_name gespeichert ist
 
  • #8
  • #9
Game12 schrieb:
aber du hast doch gesagt:
Holla, leg mir keine falschen Zitate vor die Haustüre ;)
Ich habe nur darauf hingewiesen das dieses:
mysql_query(UPDATE `Datenbank` SET Name =->$set_name' WHERE Nr = $id) [size=16pt]= [/size]
nicht korrekt ist und somit nicht funktioniert ;)

Game12 schrieb:
das sollte ja kein PHP-Code sein sondern nur eine Verdeutlichung....

Gewöhn dir das erst gar nicht an, wenn das erst mal im Kopf drinn ist schreibst du es auch in den Code.
Und dann einen Fehler suchen ist seeeeehr schwer.

Beispiel:
Mir ist sofort aufgefallen das hinter der Query noch = steht, und das hat mir irgendwie nicht in die Syntax gepasst.

Wenn du es aber erst mal im Kopf hast, fallen dir mitunter solche Kleinigkeiten gar nicht mehr auf, und die Fehlersuche wird zur Qual ;)

Nur zur Info :2funny:
 
  • #10
Ja du hast wohl recht ;)... danke übrigens....

vielleicht sollte ich statt 3 Sprachen ein bisschen zu können mal eine richtig lernen... Aber die Anwendungsbereiche sind halt so verschieden, und jede hat ihre Vor- und Nachteile...

PCDConny schrieb:
Holla, leg mir keine falschen Zitate vor die Haustüre ;)

hab ich das denn?... nein, war nicht böse gemeint oder so, ich wusste nur nicht genau was du meinst...

mal wider ein edit:

ist denn nun $test FALSE oder TRUE wenn es keinen eintrag mit Nr = $id gibt?

$test = FALSE;
if(mysql_query(UPDATE `Datenbank` SET Name =->$set_name' WHERE Nr = $id) == )
{
$test = TRUE;
}
 
  • #11
Hmmmmm, ein __guggemalwerfeblick__ in das PHP-Manual bewirkt manchmal wahre Wunder ;)

Nur für SELECT, EXPLAIN, SHOW oder DESCRIBE Anweisungen liefert mysql_query() eine Ressourcen-Kennung oder FALSE, falls die Anfrage nicht korrekt ausgeführt wurde. Für alle anderen SQL Anweisungen ist der Rückgabewert von mysql_query() im Erfolgsfall TRUE, im Fehlerfall FALSE. Ein Rückgabewert ungleich FALSE bedeutet, dass die Anfrage gültig war und vom Server ausgeführt werden konnte. Das alleine sagt jedoch überhaupt nichts über die Anzahl veränderter oder gelieferter Datensätze aus. Es ist durchaus möglich, dass eine Anfrage erfolgreich war, ohne einen einzigen Datensatz zur verändern oder zu liefern.

=>

Dat ganze Teil gibbets auch als *.chm zum Download ;)


Edit:
Bevor du dir nen Wolf suchst, die von dir benötigte Funktion ist: mysql_affected_rows();
 
  • #12
Danke, jetzt funktioniert alles... :1

aber ich habe schon die nächste Frage:

ich will in der Tabelle nach einem Eintrag suchen bisher habe ich einfach immer alle einträge ausgelesen und dann jeden mit der suche verglichen also:

if($suche == $eintrag)
{
echo $eintrag;
}

nun ist ein solcher Vergleich aber sehr genau und wenn ein User z.b. test statt Test eingibt, so findet das script nichts...

gibt es eine Funktion in PHP, die vergleiche macht, bei denen nicht auf Groß- und Kleinschreibung geachtet wird?
 
  • #13
Game12 schrieb:
gibt es eine Funktion in PHP, die vergleiche macht, bei denen nicht auf Groß- und Kleinschreibung geachtet wird?

Warum eine PHP-Funktion, such doch direkt in der Tabelle ;)

Direkte Suche Groß-/Kleinschreibung ist egal
Code:
SELECT * FROM meine_tabelle WHERE name='Karl-Hugo';
Code:
SELECT * FROM meine_tabelle WHERE name='karl-hugo';

Name muss mit Karl anfangen
Code:
SELECT * FROM meine_tabelle WHERE name LIKE->Karl%';

Name muss mit Hugo aufhören
Code:
SELECT * FROM meine_tabelle WHERE name LIKE->%Hugo';

Name muss Hugo enthalten
Code:
SELECT * FROM meine_tabelle WHERE name LIKE->%Hugo%';
 
  • #14
Danke nochmal :1... so jetzt hab ich erstmal keine frage mehr um dich zu löchern mml es funktioniert nämlich alles :)
 
Thema:

MySQL was passiert wenn man WHERE verwendet wenn...?

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben