3 Stimmen

SQL UPDATE-Anweisung - liefert Erfolg, aber 0 betroffene Zeilen

Ich sende eine SQL UPDATE-Abfrage, und die mySQL-Datenbank verhält sich seltsam. Sie gibt eine erfolgreiche Antwort zurück, aber es sind 0 Zeilen betroffen. Der Code lautet:

UPDATE place 
SET city='Qatar' AND country='Qatar'
WHERE placeid='25'

Response: Successful 0 row(s) affected. ( Query took 0.0003 sec )

Es gibt definitiv einen Datensatz mit placeid='25' in der Datenbank. Wenn ich ein SELECT * FROM place WHERE placeid='25' ausführe, erhalte ich den Datensatz zurück.

Irgendwelche Ideen? Danke!

EDIT:

Table structure:

SQL query: describe place; 
Rows: 9

Field         Type     Null   Key    Default  Extra
title         text     NO            NULL     
description   text     NO            NULL     
latitude      float    NO            NULL     
longitude     float    NO            NULL     
image         text     NO            NULL     
placeid       int(11)  NO     PRI    NULL     
country       text     YES           NULL     
city          text     YES           NULL     
address       text     YES           NULL

16voto

LaGrandMere Punkte 10177

Versuchen Sie es damit:

UPDATE place 
SET city='Qatar', country='Qatar'
WHERE placeid=25

Weil Ihr AND klingt seltsam in Ihrer Anfrage.

2voto

eremmel Punkte 184

Mir ist aufgefallen, dass MySQL "schlau" ist und einen Datensatz nicht mit einem Wert aktualisiert, der bereits in der Datenbank vorhanden ist. Wenn ich eine Aktualisierungsanweisung von Workbench aus ausführe, erhalte ich beim ersten Mal die Antwort (Aktualisierung von "a" auf "b"):

update t.t set s='b' where k > 0|1 Zeile(n) betroffen Übereinstimmende Zeilen: 1 Geändert: 1 Warnungen: 0

Beim zweiten Mal erhalte ich die Antwort (Aktualisierung von 'b' auf 'b'):

update t.t set s='b' where k > 0|0 row(s) affected Übereinstimmende Zeilen: 1 Geändert: 0 Warnungen: 0

Zum Glück ist die Zeile trotzdem in der Transaktion gesperrt.

-2voto

Pabuc Punkte 5510

Sind Sie sicher, dass placeId varchar und nicht numerisch ist? Haben Sie es ohne '' versucht?

UPDATE place  SET city='Qatar' AND country='Qatar' WHERE placeid=25

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X