Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP/MySQL] - commit klappt nicht (https://www.delphipraxis.net/152896-%5Bphp-mysql%5D-commit-klappt-nicht.html)

fkerber 11. Jul 2010 20:07

[PHP/MySQL] - commit klappt nicht
 
Hi!

Ich bin verwirrt.
Ich habe folgendes Statement:

PHP-Quellcode:
   $db -> autocommit(false);
   
   $sql2 = $db->prepare('SELECT active FROM course_registrations WHERE participantId=? AND courseId=?');
   $sql2 -> bind_param('ii', $participantID, $courseID);
   $sql2 -> execute();
   $sql2 -> bind_result($active);
   $sql2 -> fetch();

   if ($db -> commit()) {
      
   } else {
      //echo $active;
      echo "ARGH";
   }
Ein einfaches 0815-Select. Das Ganze soll in einer Transaktion laufen, mit was anderem zusammen, aber das ist hier unerheblich (will heißen, das andere geht einwandfrei - sicher!).
Aber das hier oben klappt nicht. Ich habe keine Idee mehr, woran es noch liegen könnte. Kopiere ich das Statement raus und schiebe es per phpMyAdmin in die DB läuft es einwandfrei. Selbst wenn ich mir $active ausgeben lasse (die Kommentarzeile einkommentiere), liefert es den richtigen Wert. Also klappt das Statement an sich ja?!
Im Error steht auch nix drin - ich verstehe die Welt nicht mehr (oder so ähnlich)...

Wer hilft mir vom Schlauch runter?


Liebe Grüße,
Frederic

mkinzler 11. Jul 2010 20:16

AW: [PHP/MySQL] - commit klappt nicht
 
Musst du die Transaktion vielleicht vorher starten?

fkerber 11. Jul 2010 20:22

AW: [PHP/MySQL] - commit klappt nicht
 
Hi!

Nein, das muss man bei mysqli nicht machen.
Wie gesagt funktioniert es auch mit dem anderen Teil der TA und auch anderen, die ich verwende...


Liebe Grüße,
Frederic

mkinzler 11. Jul 2010 20:25

AW: [PHP/MySQL] - commit klappt nicht
 
Bei einem Select gibt es ja eigentlich auch nichts zum comitten

fkerber 11. Jul 2010 20:32

AW: [PHP/MySQL] - commit klappt nicht
 
Das habe ich mir auch schon gedacht.
Ich erzähl mal die ganze story.

Ich mach ein Update in der DB und möchte dann den geänderten Wert auslesen.
Das muss ich zusammen in einer Transaktion machen, damit mir keiner dazwischen fummeln kann.

Und das muss ja irgendwie gehen...
Aber wenn das SELECT drin ist, gehts schief...

Oder gibt es einen anderen Weg?


Liebe Grüße,
Frederic

alcaeus 11. Jul 2010 21:04

AW: [PHP/MySQL] - commit klappt nicht
 
Zitat:

Zitat von fkerber (Beitrag 1034845)
Ich mach ein Update in der DB und möchte dann den geänderten Wert auslesen.
Das muss ich zusammen in einer Transaktion machen, damit mir keiner dazwischen fummeln kann.

In so einem Fall verwendet man LOCK TABLES, nicht Transaktionen. Transaktionen verwendest du wenn du mehrere Updates/Inserts machen musst, die allerdings eine Einheit bilden und deswegen entweder komplett oder gar nicht geschrieben werden.

Greetz
alcaeus

mkinzler 11. Jul 2010 21:11

AW: [PHP/MySQL] - commit klappt nicht
 
Es scheint ihm eher darum zu gehen, sicherzustellen, den geänderten Satz zu bekommen.
Das sollte mit last_inserted_id() gehen ( auch wenn der Name der Funktion es nicht unbedingt Erraten lässt)

fkerber 11. Jul 2010 21:14

AW: [PHP/MySQL] - commit klappt nicht
 
Hi,

hmm, gibt es da wirklich keine andere Möglichkeit?
Wenn ich die Doku richtig lese, habe ich ja nur die Möglichkeit, die komplette Tabelle zu locken.

Das ist ja doch schon deutlich "härter", als im Rahmen einer TA, die ja deutlich feinkörniger arbeiten kann...

@Markus:
last_insert_id funktioniert nur bei auto_inc Feldern und (wie der Name doch vermuten lässt ;) ) nur bei Inserts - zumindest laut Doku.
Außerdem brauche ich auch nicht die id, sondern ein anderes Feld.


Liebe Grüße,
Frederic

mkinzler 11. Jul 2010 21:19

AW: [PHP/MySQL] - commit klappt nicht
 
Dann frag halt die Updatebedingung im Select ab

fkerber 11. Jul 2010 21:20

AW: [PHP/MySQL] - commit klappt nicht
 
Hi!

Wie meinst du?
In welchem Select soll ich was fragen?


Liebe Grüße,
Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz