[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Problem mit REX_SQL UPDATE und INSERT - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
elricco
Beiträge: 197
Registriert: 22. Jun 2007, 00:48
Wohnort: Bochum
Kontaktdaten: Website

Problem mit REX_SQL UPDATE und INSERT

14. Sep 2015, 19:04

Hallo alle zusammen,

ich habe mir eine kleinen Codeschnipsel geschrieben indem erst probiert wird die eventuell bereits existierenden Zeile zu updaten, sollte das fehl schlagen, dann versuche bitte einen Insert.

Das Interessante ist, selbst wenn noch gar nichts in der DB ist, ist das UPDATE immer erfolgreich - der INSERT wird erst gar nicht ausgeführt...
Was raffe oder sehe ich denn hier nicht? Im Wiki auch schon geschaut, hier gesucht...

Code: Alles auswählen

      $sql = rex_sql::factory();
      $sql->setTable('rex_mytable');
      $sql->setWhere('ad_keys='.$key['key']);
      $sql->setValue('createdate', $key['createDate']);
      $sql->setValue('modificationdate', $key['modDate']);
      if( $sql->update() )
      {
        echo 'UPDATE: Einfügen erfolgreich<br />';
      }
      else
      {
        echo 'UPDATE: Fehler beim einfügen<br />';
        $sql2 = rex_sql::factory();
        $sql2->setTable('rex_mytable');
        $sql2->setValue('ad_keys', $key['key']);
        $sql2->setValue('createdate', $key['createDate']);
        $sql2->setValue('modificationdate', $key['modDate']);

        if( $sql2->insert() )
        {
          echo 'INSERT: Einfügen erfolgreich<br />';
        }
        else
        {
          echo 'INSERT: Fehler beim einfügen<br />';
        }
      }
Vielen Dank für schauen und die Aufmerksamkeit
Gruß Tim

Benutzeravatar
elricco
Beiträge: 197
Registriert: 22. Jun 2007, 00:48
Wohnort: Bochum
Kontaktdaten: Website

[SOLVED]: Problem mit REX_SQL UPDATE und INSERT

14. Sep 2015, 20:12

Soooo, ich hab es jetzt mal so gelöst:

Code: Alles auswählen

      $query = 'SELECT `ad_keys` FROM `rex_mytable` WHERE ad_keys='.$key['key'];

      $sql = new rex_sql;
      $sql->setQuery($query);

      if( $sql->getRows() == 0 )
      {
        $sqlInsert = rex_sql::factory();
        $sqlInsert->setTable('rex_mytable');
        $sqlInsert->setValue('ad_keys', $key['key']);
        $sqlInsert->setValue('createdate', $key['createDate']);
        $sqlInsert->setValue('modificationdate', $key['modDate']);

        if( $sqlInsert->insert() )
        {
          echo 'INSERT: Einfügen erfolgreich<br />';
        }
        else
        {
          echo 'INSERT: Fehler beim einfügen<br />';
        }
      }
      else
      {
        $sqlUpdate = rex_sql::factory();
        $sqlUpdate->setTable('rex_mytable');
        $sqlUpdate->setWhere('ad_keys', $key['key']);
        $sqlUpdate->setValue('createdate', $key['createDate']);
        $sqlUpdate->setValue('modificationdate', $key['modDate']);
        $sqlUpdate->update();
        echo 'UPDATE: Einfügen erfolgreich<br />';
      }
Da die Keys unique sind, kommt sich da auch nichts ins Gehege.
Ich hoffe es hilf jemandem - auch wenn ich bis jetzt nicht begreife warum das andere nicht funktioniert hat. (Ich freue mich über eine Erkläring ;) )
Gruß Tim

Ingo
Beiträge: 782
Registriert: 24. Jun 2010, 00:34

Re: Problem mit REX_SQL UPDATE und INSERT

15. Sep 2015, 02:30

$sql->setDebug(), print_r() oder var_dump() kennst du?

Benutzeravatar
elricco
Beiträge: 197
Registriert: 22. Jun 2007, 00:48
Wohnort: Bochum
Kontaktdaten: Website

Re: Problem mit REX_SQL UPDATE und INSERT

15. Sep 2015, 09:23

Ja, bei print_r und var_dumb kommt bei mir immer nur ne 1 raus egal ob successful oder nicht.
$sql->setDebug() kannte ich noch nicht, aber werde ich mal ausprobieren.

Vielen Dank :)
Gruß Tim

Ingo
Beiträge: 782
Registriert: 24. Jun 2010, 00:34

Re: Problem mit REX_SQL UPDATE und INSERT

15. Sep 2015, 10:19

Was du nehmen kannst (weil ad_keys unique ist): https://dev.mysql.com/doc/refman/5.5/en ... icate.html

Code: Alles auswählen

<?php
$sql = rex_sql::factory();
$qry = '
    INSERT INTO rex_mytable
        (ad_keys, createdate, modificationdate)
    VALUES
        ("'.$key['key'].'", "'.$key['createDate'].'", "'.$key['modDate'].'")
    ON DUPLICATE KEY UPDATE
        createdate = "'.$key['createDate'].'",
        modificationdate = "'.$key['modDate'].'"
';
$sql->setQuery($qry);
?>

Zurück zu „Sonstiges“