php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.04.2009, 13:50  
Benutzer
 
Registriert seit: 06.01.2009
Beiträge: 55
peroja befindet sich auf einem aufstrebenden Ast
Standard insert into table / aber mehrere daten

hallo. ich mach folgendes um einen table zu eroeffnen:

PHP-Code:
CREATE TABLE $newfile 
(
ID int NOT NULL AUTO_INCREMENT
PRIMARY KEY(ID),
url varchar(255),
row1 varchar(255),
row2 varchar(255),
row3 varchar(255),
row4 varchar(255),
row5 varchar(255),
row6 varchar(255),
row7 varchar(255),
row8 varchar(255)

)
"; 
nun will ich mehrere daten da reinschaufeln aber ich weiss nciht (mehr) wie das geht?

PHP-Code:
$sql2="INSERT INTO $newfile (url, row1, row2, row3, row4, row5, row6, row7, row8) VALUES ('$row0','$row1','$row2','$row3','$row4','$row5','$row6','$row7','$row8')"
damit kann ich wohl daten reinschieben aber immer nur jeweils eine zeile.
ich hab aber mehrere zeilen wobei jede zeile wie man sieht eine ID hat.

muss ich einfach am anfang noch die spalte ID dazunehmen und mysql springt dann automatisch dorthin und eroeffnet eine neue zeile wo ich die daten dafuer (in zeile 2) einfuegen kann?

peroja ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.04.2009, 13:54  
Erfahrener Benutzer
 
Registriert seit: 04.09.2008
Beiträge: 297
martl666 befindet sich auf einem aufstrebenden Ast
Standard

Wie genau machst du das???

CREATE TABLE $newfile ?

newfile ist also eine variable oder was?

http://dev.mysql.com/doc/refman/5.1/en/insert.html

Geändert von martl666 (03.04.2009 um 13:57 Uhr).
martl666 ist offline  
Alt 03.04.2009, 13:54  
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Beiträge: 316
PHP-Kenntnisse:
Fortgeschritten
moveax1 befindet sich auf einem aufstrebenden Ast
Standard

du kannst mehrere Values übergeben:

MySQL 4.0.21 -> Mehrere Datensätze mit einem Insert Statement? - Relationale Datenbanksysteme @ tutorials.de: Forum, Tutorial, Anleitung, Schulung & Hilfe
__________________
twitter.com/moveax1 || http://modxcms.com/ || http://ubuntuusers.de/

$live->free() OR die();
moveax1 ist offline  
Alt 18.04.2010, 16:10  
Neuer Benutzer
 
Registriert seit: 14.04.2010
Beiträge: 13
PHP-Kenntnisse:
Anfänger
krampi befindet sich auf einem aufstrebenden Ast
Standard

Da würde auch mich etwas beschäftigen. Bei mir bezieht INSERT INTO seine Daten aus Variablen, die widerum aus einer Tabelle (weil ich Rechnungen anstellen muss).

Leider trägt Insert auch nur eine Zeile ein, aber nicht mehrere.
Wenn ich aber ein FROM ransetze hinter der letzten Klammer von VALUES, erscheint ein Fehler. Außerdem liegt die Rechenvariable ja nicht in der Tabelle.

PHP-Code:
    $eintrag "INSERT INTO ex_calc (stock_id, stockprice, sell, buy, kurstest, totalstocks) VALUES ($stock_id, $stockprice, $sell, $buy, $kurstest, $totalstocks)";
    
$eintragen mysql_query($eintrag);

    IF(
$eintragen == true)
        {
        echo 
"Erfolgreich";
        }
    ELSE
        {
        echo 
"Fehler beim Speichern";
        } 
Was muss da umgestellt werden.
krampi ist offline  
Alt 18.04.2010, 16:29  
Benutzer
 
Registriert seit: 03.11.2009
Beiträge: 46
PHP-Kenntnisse:
Anfänger
mumaha befindet sich auf einem aufstrebenden Ast
Standard

@peroja:
Zitat:
damit kann ich wohl daten reinschieben aber immer nur jeweils eine zeile.
ich hab aber mehrere zeilen wobei jede zeile wie man sieht eine ID hat.

muss ich einfach am anfang noch die spalte ID dazunehmen und mysql springt dann automatisch dorthin und eroeffnet eine neue zeile wo ich die daten dafuer (in zeile 2) einfuegen kann?
Arbeitest du mit phpmyadmin?
Wenn du bei dem erstellen der Tabelle die Spalte "ID" zum Primärschlüssel machst (primarykey) und auf "autoincrement" (laufend steigend) setzt, kannst du dir bei der INSERT-Phrase das "ID" sparen (Er wird immer n+1 als ID vergeben).

Falls du phpmyadmin nutzt kannst du das Ganze einfach über die Konfiguration der Spalten im UI steuern. Wenn nicht, brachst du in der CREATE-TABLE-Phase nur die richtigen Zusätze noch (näheres findest du in der Doku von mySQL).

@krampi:
Zitat:
Wenn ich aber ein FROM ransetze hinter der letzten Klammer von VALUES, erscheint ein Fehler. Außerdem liegt die Rechenvariable ja nicht in der Tabelle.
Nach meinem Wissenstand geht das aus syntaktischen Gründen nicht.

Ich bin jetzt nicht der mega-profi, aber ich INSERTe nach wie vor per Zeile (Einfach uns allein weil ich keine alternative kenne). Alleine das der Export von phpmyadmin alle Datensätze in einzelne Zeilen-INSERTs zerlegt lässt darauf schließen das es auch keine andere Möglichkeit gibt.

Was ich euch aus strukturellen Gründen nahelegen kann ist den INSERT vorbereiten würde:
1. Alle Daten fertig erbeben und ggf. damit rumrechnen
2. Alle Daten die ihr in die DB eintragen wollt in einen Array speisen
3. Per Schleife alle an die Datenbank schicken

Falls Ihr bessere Alternativen kennt bitte PM oder hier gleich rein. Funktionieren tut es auf jeden fall auch so.
mumaha ist offline  
Alt 18.04.2010, 17:13  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von mumaha Beitrag anzeigen
Ich bin jetzt nicht der mega-profi, aber ich INSERTe nach wie vor per Zeile (Einfach uns allein weil ich keine alternative kenne). Alleine das der Export von phpmyadmin alle Datensätze in einzelne Zeilen-INSERTs zerlegt lässt darauf schließen das es auch keine andere Möglichkeit gibt.
Man kann natürlich per INSERT mehrere Zeilen auf einmal einfügen;
und die Export-Funktion von PMA lässt einen auch auswählen, welche Form von INSERT man darin nutzen möchte.



Zitat:
Zitat von krampi
Wenn ich aber ein FROM ransetze hinter der letzten Klammer von VALUES, erscheint ein Fehler.
Von ominösen Fehler zu reden, ohne die Meldung im Wortlaut zu benennen, ist keine brauchbare Art, Probleme zu beschreiben.

Eine FROM-Klausel direkt im INSERT ist aber natürlich unsinnig, die hat da einfach nichts verloren.
Es gibt allerdings eine INSERT ... SELECT Syntax, mit der man Werte, die eingefügt werden sollen, aus einer oder mehreren anderen Tabellen auslesen kann; siehe Manual.
ChrisB ist offline  
Alt 19.04.2010, 00:15  
Neuer Benutzer
 
Registriert seit: 14.04.2010
Beiträge: 13
PHP-Kenntnisse:
Anfänger
krampi befindet sich auf einem aufstrebenden Ast
Standard

In meinem Code muss ein entscheidender Fehler stecken. Zwar erscheint keine Fehlermeldung, ich habe es auch unterbinden können, dass ein und derselbe Eintrag fünfmal pro Aufruf der Seite in die Tabelle ex_calc eingetragen wird, aber doch ist es nur eine Zeile, die in die besagte Tabelle geschrieben wird, trotz WHILE($row = mysql_fetch_array($result)){}. Dabei sollten es drei Zeilen sein.

Nur kann ich mir jetzt langsam nicht mehr sagen, wo der Fehler liegt. Ich dachte, der Fehler sei behoben mit mysql_fetch_array.

Um es so auszudrücken, ich gebe mich geschlagen, das ist irgendwie eine Nummer zu hoch.
Wo mache ich den Fehler?

PHP-Code:
<?php


mysql_connect
("...","...","...");
mysql_select_db("...");

$berechnung "SELECT ex_transfer.stock_id AS stock_id, ex_transfer.stockprice AS stockprice, SUM(IF(ex_transfer.Order=2,stockcount,0)) AS sell, SUM(IF(ex_transfer.Order=1,stockcount,0)) AS buy ".
              
"FROM ex_transfer ".
              
"GROUP BY ex_transfer.stockprice";

$result mysql_query($berechnung) or die(mysql_error());
WHILE(
$row mysql_fetch_array($result)){

$stock_id $row['stock_id'];
$stockprice $row['stockprice'];
$sell $row['sell'];
$buy $row['buy'];
$kurstest $row['buy']-$row['sell'];
IF (
$row['buy']>$row['sell']) {$totalstocks =  $row['sell'];} ELSE {$totalstocks =  $row['buy'];}


}



    
$eintrag "INSERT INTO ex_calc (stock_id, stockprice, sell, buy, kurstest, totalstocks) VALUES ($stock_id, $stockprice, $sell, $buy, $kurstest, $totalstocks)";
    
$eintragen mysql_query($eintrag);

    IF(
$eintragen == true)
        {
        echo 
"Erfolgreich";
        }
    ELSE
        {
        echo 
"Fehler beim Speichern";
        }
    echo 
mysql_errno() . ": " mysql_error(). "\n";
?>
Vielleicht habe ich Tomaten auf den Augen. Nur weiß ich nun nicht mehr weiter.

Geändert von krampi (19.04.2010 um 00:43 Uhr). Grund: Connect-Daten geändert - Dank an ChrisB
krampi ist offline  
Alt 19.04.2010, 00:39  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von krampi Beitrag anzeigen
aber doch ist es nur eine Zeile, die in die besagte Tabelle geschrieben wird, trotz WHILE($row = mysql_fetch_array($result)){}. Dabei sollten es drei Zeilen sein.
Dein INSERT-Statement befindet sich aber gar nicht innerhalb der While-Schleife ...

Zitat:
Wo mache ich den Fehler?
Schon beim Schreiben des Codes - vernüftiges Einrücken entsprechend der Verschachtelungstiefe macht sowas sehr viel übersichtlicher.


Und vielleicht wäre es ganz clever, wenn du deine höchstvermutlich realen Zugangsdaten mal aus dem gezeigten Code raus editierst ...
ChrisB ist offline  
Alt 19.04.2010, 00:48  
Neuer Benutzer
 
Registriert seit: 14.04.2010
Beiträge: 13
PHP-Kenntnisse:
Anfänger
krampi befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Dein INSERT-Statement befindet sich aber gar nicht innerhalb der While-Schleife ...
ChrisB, vielen Dank. Du hast mir den Abend/die Nacht/den Morgen versüßt. Vielen herzlichen Dank. Das schreibe ich mir in mein Notizbüchlein.


Das mit dem Einrücken werde ich befolden und den Code habe ich entfernt.


Also, Chris, nochmals Dank. Jetzt werde ich es wohl endlich hinkriegen. Dieser Teil des Projekts war der wohl schwierigste und ich habe was gelernt.
krampi ist offline  
Alt 19.04.2010, 00:50  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Da Du mySQL benutzt, solltest Du INSERTs nicht in einer Schleife absetzen, sondern eine Multi-INSERT-Query zusammenbauen und diese einmalig absenden.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Insert into - Daten werden nicht in Datenbank geschrieben Baltasar PHP Tipps 2008 21 24.05.2009 06:56
INSERT und UPDATE problem kaus08 PHP Tipps 2009 72 17.01.2009 18:39
[Erledigt] INSERT INTO mit SELECT Wolla Datenbanken 2 20.11.2008 12:37
Query optimieren __abcde__ Datenbanken 8 28.08.2008 10:44
Self Join / Nested Join ? Ich hab ne Blockade... iangillan Datenbanken 11 06.01.2008 21:37
insert into für mehrere daten LP Datenbanken 4 10.10.2006 13:43
Insert into macht Mucken ahertle Datenbanken 20 06.12.2005 11:44
MySQL to Access - INSERT INTO zu langsam bendigo Datenbanken 0 23.11.2005 16:33
INSERT INTO funktioniert nicht Connar PHP Tipps 2005-2 16 03.07.2005 11:16
select-abfrage mit verweis auf satz in eigener tabelle hekto Datenbanken 15 20.01.2005 15:51
[Erledigt] MySQL-DB gibt keine Daten zurück!!! Datenbanken 4 21.12.2004 21:00
[Erledigt] Insert into ROW per Loop - Hiiilllfeee ;-) Datenbanken 5 13.11.2004 11:19
mehrere COUNT() mit verschiedenen GROUP BY -- geht das? tapferesschneiderlein Datenbanken 0 08.09.2004 14:54
INSERT INTO werte einen Array PHP Tipps 2004 3 12.07.2004 20:33
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
insert into mehrere datensätze, insert into mehrere zeilen, sql insert into mehrere datensätze, mysql insert mehrere zeilen, sql insert mehrere zeilen, mssql insert into mehrere datensätze, mysql insert mehrere datensätze, sql insert into mehrere zeilen, insert into values mehrere zeilen, insert into table, mehrere insert into, sql insert into mehrere values, sql insert mehrere datensätze, insert mehrere zeilen, mssql insert mehrere datensätze, http://www.php.de/php-einsteiger/53719-insert-into-table-aber-mehrere-daten.html, insert into 2 datensätze, php insert into table, sql insert mehrere zeilen auf einmal, insert into sql mehrere zeilen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:34 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum