Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Anfängerfragen ›

[Gelöst] db_query INSERT in foreach-schleife

Eingetragen von N20 (34)
am 17.09.2010 - 10:17 Uhr in
  • Anfängerfragen
  • Drupal 6.x

Moin,

ich bin grade dabei mein erstes Modul für Drupal zu basteln.

ich möchte gerne mehrere inserts mittels foreach in die datenbank schreiben, im moment wir leider immer nur einmal (erstes sql statement) in die DB geschrieben.

so erstelle ich das sql statement:

<?php

$inserts
= array()
for(
$i=0; $i < $count; $i++) {
   
$sql = "INSERT INTO ccturn_data ( system_id, trans )  VALUES ( '".$data['system_id'][$i]."',  '".$data['trans_amount'][$i]."' )";
   
array_push($inserts, $sql);
}

?>

und mittels foreach versuche ich dann für alle 6 vorhandenen datensätze in die db zu schreiben:

<?php

foreach ($inserts as $item){
      
db_query($item);
       echo
$item, '<br />';
}

?>

wobei das echo in der foreach schleife alle 6 statements korrekt ausgibt, es wir aber immer nur der erste auch wirklich in die db geschrieben.

hab ich da irgenwo einen denkfehler? oder ist das so garnicht möglich was ich da versuche?

‹ Gelöst- wysiwyg editor openwysiwyg nicht sichtbar in drupal [Gelöst] Tabelle Languages wird nicht angelegt ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Warum nicht einfach

Eingetragen von Sense (1559)
am 17.09.2010 - 10:30 Uhr

Warum nicht einfach folgendermaßen:

<?php
for($i=0; $i < $count; $i++) {
 
$sql = "INSERT INTO ccturn_data (system_id, trans) VALUES ('%s', '%s')";
 
db_query($sql, $data['system_id'][$i], $data['trans_amount'][$i]);
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das macht natürlich Sinn

Eingetragen von N20 (34)
am 17.09.2010 - 10:39 Uhr

Das macht natürlich Sinn :)
Aber leider bleibt das Ergebniss mit der vereinfachten Variante das selbe. Es wir nur ein Eintrag in die DB gemacht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

<?php$count = 5;for($i=0; $i

Eingetragen von Sense (1559)
am 17.09.2010 - 10:44 Uhr

<?php
$count
= 5;
for(
$i=0; $i < $count; $i++) {
 
$sql = "INSERT INTO ccturn_data (system_id, trans) VALUES ('%s', '%s')";
 
db_query($sql, $data['system_id'][$i], $data['trans_amount'][$i]);
}
?>

Ist die Variable $count auch gefüllt?

  • Anmelden oder Registrieren um Kommentare zu schreiben

<?php echo $count; ?> = 6 wie

Eingetragen von N20 (34)
am 17.09.2010 - 10:49 Uhr

<?php

echo $count;

?>

=
6

wie gesagt hatte meine erste und umständliche variante ja schon alle 6 sql querys vernünftig ausgegeben, und auch mit der optimierten variante geht das:

<?php

echo $sql, '<br />';

?>

=
INSERT INTO ccturn_data (system_id, trans_amount) VALUES ('%s', '%s')
INSERT INTO ccturn_data (system_id, trans_amount) VALUES ('%s', '%s')
INSERT INTO ccturn_data (system_id, trans_amount) VALUES ('%s', '%s')
INSERT INTO ccturn_data (system_id, trans_amount) VALUES ('%s', '%s')
INSERT INTO ccturn_data (system_id, trans_amount) VALUES ('%s', '%s')
INSERT INTO ccturn_data (system_id, trans_amount) VALUES ('%s', '%s')

der hund scheint woandersbegraben zu sein...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn deine Tabellen mit dem

Eingetragen von Sense (1559)
am 17.09.2010 - 10:55 Uhr

Wenn deine Tabellen mit dem DB-Prefix versehen sind, probier mal folgendes:

<?php
$count
= 5;
for(
$i=0; $i < $count; $i++) {
 
$sql = "INSERT INTO {ccturn_data} (system_id, trans) VALUES ('%s', '%s')";
 
db_query($sql, $data['system_id'][$i], $data['trans_amount'][$i]);
}
?>

Ansonsten würde ich mir mal die Daten innerhalb der Schleife ausgeben lassen.
Schau auch mal in die Log-Einträge von Drupal ob dort etwas gelistet wird, vielleicht gibt das ja Aufschluss.

  • Anmelden oder Registrieren um Kommentare zu schreiben

mh, auch mit der variante das

Eingetragen von N20 (34)
am 17.09.2010 - 11:11 Uhr

mh, auch mit der variante das selbe ergebniss. nur ein eintrag in der db:

<?php

for($i=0; $i < $count; $i++) {
      echo
'ID:' . $data['system_id'][$i] . '<br />';
      echo
'AMOUNT:' . $data['trans_amount'][$i] . '<br />';
     
$sql = "INSERT INTO {ccturn_data} (system_id, trans_amount) VALUES ('%s', '%s')";
      echo
'SQL_QUERY:' . $sql . '<br />';
     
db_query($sql, $data['system_id'][$i], $data['trans_amount'][$i]);
    }

?>

ID:1
AMOUNT:5
SQL_QUERY:INSERT INTO {ccturn_data} (system_id, trans_amount) VALUES ('%s', '%s')
ID:2
AMOUNT:3
SQL_QUERY:INSERT INTO {ccturn_data} (system_id, trans_amount) VALUES ('%s', '%s')
ID:3
AMOUNT:0
SQL_QUERY:INSERT INTO {ccturn_data} (system_id, trans_amount) VALUES ('%s', '%s')
ID:4
AMOUNT:2
SQL_QUERY:INSERT INTO {ccturn_data} (system_id, trans_amount) VALUES ('%s', '%s')
ID:5
AMOUNT:0
SQL_QUERY:INSERT INTO {ccturn_data} (system_id, trans_amount) VALUES ('%s', '%s')
ID:6
AMOUNT:0
SQL_QUERY:INSERT INTO {ccturn_data} (system_id, trans_amount) VALUES ('%s', '%s')

ich hab zwar mal kurz gegooglet, aber ich bin mir nicht sicher: welche logfile meinst du, und wo finde ich die? hat drupal sowas wie eine eigene log?
wenn du das normal error_log des servers meinst, die zeigt keine fehler auf.

  • Anmelden oder Registrieren um Kommentare zu schreiben

ok, hab logs gefunden :)

Eingetragen von N20 (34)
am 17.09.2010 - 11:16 Uhr

ok, hab logs gefunden :) sorry, bin anfänger.

• User warning: Duplicate entry &#039;2010-09-17 12:12:03&#039; for key 2 query: INSERT INTO ccturn_data (system_id, trans_amount) VALUES (&#039;1&#039;, &#039;3&#039;) in _db_query() (line 146 of /home/web14/public_html/includes/database.mysqli.inc).
• User warning: Duplicate entry &#039;2010-09-17 12:12:03&#039; for key 2 query: INSERT INTO ccturn_data (system_id, trans_amount) VALUES (&#039;2&#039;, &#039;0&#039;) in _db_query() (line 146 of /home/web14/public_html/includes/database.mysqli.inc).
• User warning: Duplicate entry &#039;2010-09-17 12:12:03&#039; for key 2 query: INSERT INTO ccturn_data (system_id, trans_amount) VALUES (&#039;3&#039;, &#039;2&#039;) in _db_query() (line 146 of /home/web14/public_html/includes/database.mysqli.inc).
• User warning: Duplicate entry &#039;2010-09-17 12:12:03&#039; for key 2 query: INSERT INTO ccturn_data (system_id, trans_amount) VALUES (&#039;4&#039;, &#039;0&#039;) in _db_query() (line 146 of /home/web14/public_html/includes/database.mysqli.inc).
• User warning: Duplicate entry &#039;2010-09-17 12:12:03&#039; for key 2 query: INSERT INTO ccturn_data (system_id, trans_amount) VALUES (&#039;5&#039;, &#039;0&#039;) in _db_query() (line 146 of /home/web14/public_html/includes/database.mysqli.inc).

  • Anmelden oder Registrieren um Kommentare zu schreiben

ok, das ist jetzt ein

Eingetragen von N20 (34)
am 17.09.2010 - 11:20 Uhr

ok, das ist jetzt ein bisschen peinlich... ich hatte in der DB eine letzte spalte "date" mit DEFAULT->TIMESTAMP und hab die auf UNIQE gesetzt. logisch das da nix funktionieren kann!!

sorry für die zeitverschwendung und danke für deine hilfe sense!

mfg N20

  • Anmelden oder Registrieren um Kommentare zu schreiben

Irgendwo musste ja der Hase

Eingetragen von Sense (1559)
am 17.09.2010 - 13:44 Uhr

Irgendwo musste ja der Hase im Pfeffer liegen ... ;)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 2 Stunden
  • Hey danke
    vor 2 Wochen 21 Stunden
  • Update: jetzt gibt's ein
    vor 2 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 3 Tagen
  • In der entsprechenden View
    vor 3 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 3 Tagen
  • gelöst
    vor 5 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 21 Stunden

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 26 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association