PDO update-query funktioniert nicht

07/03/2014 - 15:09 von Cornelius Lange | Report spam
Hallo,

seht ihr hier einen Fehler, weshalb es zu zu keinem
update kommt?
Das execute() ergibt ein bool(true), aber es wird nicht eingetragen.

Wie kann ich bei PDO sehen, wie die query aussieht?

-
...
list($id,$lo,$la)=explode(",",$pid);

// open the database
try {
$db = new PDO('mysql:host=localhost;dbname='.$dbname.';charset=utf8',
$dbuser, $dbpass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //
Fehlermeldungen
} catch(PDOException $e) {
$ajaxres=array();
$ajaxres['resp']@;
$ajaxres['dberror']=$e->getCode();
$ajaxres['msg']=$e->getMessage();
sendajax($ajaxres); }

try {
$stmt = $db->prepare("UPDATE plaques SET lon=:lo, lat=:la WHERE pid=:id");
$stmt->bindParam(':lo',$lo);
$stmt->bindParam(':la',$la);
$stmt->bindParam(':id',$id);
if($stmt->execute()) { echo $id." erfolgreich "; $info =
$stmt->execute(); var_dump( $info ); } else { echo " NOOO "; }
} catch(PDOException $e) {
$ajaxres=array();
$ajaxres['resp']@;
$ajaxres['dberror']=$e->getCode();
$ajaxres['msg']=$e->getMessage();
sendajax($ajaxres); }
...
-

Coni
 

Lesen sie die antworten

#1 Christian Winter
07/03/2014 - 16:41 | Warnen spam
Am 07.03.2014 15:09, schrieb Cornelius Lange:
Hallo,

seht ihr hier einen Fehler, weshalb es zu zu keinem
update kommt?
Das execute() ergibt ein bool(true), aber es wird nicht eingetragen.

Wie kann ich bei PDO sehen, wie die query aussieht?



[schnipp]
try {
$stmt = $db->prepare("UPDATE plaques SET lon=:lo, lat=:la WHERE
pid=:id");
$stmt->bindParam(':lo',$lo);
$stmt->bindParam(':la',$la);
$stmt->bindParam(':id',$id);
if($stmt->execute()) { echo $id." erfolgreich "; $info > $stmt->execute(); var_dump( $info ); } else { echo " NOOO "; }
} catch(PDOException $e) {
$ajaxres=array();
$ajaxres['resp']@;
$ajaxres['dberror']=$e->getCode();
$ajaxres['msg']=$e->getMessage();
sendajax($ajaxres); }
...



Einen "fertigen" SQL-String gibt es hier nicht, da bei Prepared
Statements die gebundenen Parameter sepearat vom Statement an den
Datenbank-Treiber übergeben werden. Was du tun kannst, ist nach dem
execute() (das du im Beispiel übrigens zweimal aufrufst) mittels
$stmt->debugDumpParams();
Informationen über Statement und tatsàchlich gebundenen Werte
ausgeben zu lassen.

-Christian

Ähnliche fragen