Tabellen-Refresh

Tabellen-Refresh

am 08.02.2007 11:52:32 von vaggy

Na Hola!

Habe festgestellt, daß Datenbank-Updates bei mir nicht korrekt
ausgeführt werden. Hier ein Beispiel:


$dbc=3Dmysql_connect('localhost','datenbank','7777777');
$result=3Dmysql_db_query('datenbank',"update msstaff set
sidtimeout=3Ddate_add(now(),interval 20 minute) where id=3D2",$dbc);
$result=3Dmysql_db_query('datenbank',"update msstaff set PIN=3D'2222'
where id=3D2",$dbc);
$result=3Dmysql_db_query('datenbank',"select SIDTimeout,PIN from msstaff
where id=3D2",$dbc);
$field=3Dmysql_fetch_array($result);
print "

Timeout: $field[SIDTimeout]

PIN: $field[PIN]

";
mysql_close($dbc);
?>


Immer, wenn im 2. Update tatsächlich eine Wertänderung stattfindet,
ignoriert er mir das 1. Update. Ein Probelauf über die MSQL-Konsole
hat bei mir ergeben, daß der Effekt dort auch auftritt. Es deutet also
darauf hin, daß es kein PHP sondern mehr ein MYSQL-Problem ist.

Gibt es eine Art "Refresh" - Funktion, mit der man Updates unmittelbar
in die Datenbank einschreiben kann? Oder hat jemand eine andere Idee?

Liebe Grüsse aus Hannover

Gerd Wagner

Re: Tabellen-Refresh

am 08.02.2007 15:18:16 von Joerg Behrens

vaggy schrieb:
> Na Hola!
>
> Habe festgestellt, daß Datenbank-Updates bei mir nicht korrekt
> ausgeführt werden. Hier ein Beispiel:
>
>
> > $dbc=mysql_connect('localhost','datenbank','7777777');
> $result=mysql_db_query('datenbank',"update msstaff set
> sidtimeout=date_add(now(),interval 20 minute) where id=2",$dbc);
> $result=mysql_db_query('datenbank',"update msstaff set PIN='2222'
> where id=2",$dbc);
> $result=mysql_db_query('datenbank',"select SIDTimeout,PIN from msstaff
> where id=2",$dbc);
> $field=mysql_fetch_array($result);
> print "

Timeout: $field[SIDTimeout]

PIN: $field[PIN]

";
> mysql_close($dbc);
> ?>
>
>
> Immer, wenn im 2. Update tatsächlich eine Wertänderung stattfindet,
> ignoriert er mir das 1. Update. Ein Probelauf über die MSQL-Konsole
> hat bei mir ergeben, daß der Effekt dort auch auftritt. Es deutet also
> darauf hin, daß es kein PHP sondern mehr ein MYSQL-Problem ist.

1. mysql_db_query ist veraltet
2. Keine Fehlerbehandlung oder Statusanzeige. mysql_affected_rows und
co. z.b

> Gibt es eine Art "Refresh" - Funktion, mit der man Updates unmittelbar
> in die Datenbank einschreiben kann? Oder hat jemand eine andere Idee?

Das koennten nur passieren wenn man Transaktionen verwendet. Diese sind
nur fuer verschiedenen Tabellentypen(INNODB) da und selbst wenn ist die
Voreinstellung AutoCommit=On. Nur du kannst wissen ob du Transaktionen
verwendest.

Gruss
Joerg


--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de

Re: Tabellen-Refresh

am 09.02.2007 09:27:03 von vaggy

Na Hola!

On 8 Feb., 15:18, Joerg Behrens wrote:
> vaggy schrieb:
>
> > Na Hola!
>
> > Habe festgestellt, daß Datenbank-Updates bei mir nicht korrekt
> > ausgeführt werden. Hier ein Beispiel:
>
> ...

> > Immer, wenn im 2. Update tatsächlich eine Wertänderung stattfindet,
> > ignoriert er mir das 1. Update. Ein Probelauf über die MSQL-Konsole
> > hat bei mir ergeben, daß der Effekt dort auch auftritt. Es deutet also
> > darauf hin, daß es kein PHP sondern mehr ein MYSQL-Problem ist.
>
> 1. mysql_db_query ist veraltet
> 2. Keine Fehlerbehandlung oder Statusanzeige. mysql_affected_rows und
> co. z.b

Ja, war ja auch nur ein Beispiel. Es titt kein Fehler auf bei der
Abfrage.

>
> > Gibt es eine Art "Refresh" - Funktion, mit der man Updates unmittelbar
> > in die Datenbank einschreiben kann? Oder hat jemand eine andere Idee?
>
> Das koennten nur passieren wenn man Transaktionen verwendet. Diese sind
> nur fuer verschiedenen Tabellentypen(INNODB) da und selbst wenn ist die
> Voreinstellung AutoCommit=3DOn. Nur du kannst wissen ob du Transaktionen
> verwendest.

Habe für die komplette Datenbank den Typ "MyISAM" drin. Wo kann ich da
nachgucken, ob ich Transaktionen verwende und ggf. Änderungen
vornehmen? - Wie gesagt, das ist kein PHP Problem im dem Sinne,
sondern der Effekt tritt auch in der MySQL-Konsole direkt auf.

Liebe Grüsse aus Hannover

Gerd Wagner