Vinzenz Mai: Fehler in der Verschachtelung ?

Beitrag lesen

Hallo,

Ich hoffe der Fehler ist nicht zu trivial.

$put = mysql_query("select plz from plz where name='berlin'",$connect);
$puts = mysql_query("select tarifname from tarif where nr < 7",$connect);

while($in = mysql_fetch_assoc($put))
{
foreach($in as $value1)
    while($ins = mysql_fetch_assoc($puts))
    {
      foreach($ins as $value2)
      {
$gets = mysql_query("insert into plz_anb              values('".$value1."','".$value2."')",$connect);

Wo könnten Fehler liegen???

An dem völlig überflüssigen PHP-Geraffel, das tun soll, was eine einzige schnucklige SQL-Anweisung viel besser kann:

INSERT INTO  
    plz_anb  
SELECT  
    plz.plz,  
    tarif.tarifname  
FROM  
    plz,                 -- ja, ganz bewußt ein Cross-Join  
    tarif                -- es soll ja jedem Datensatz aus  
WHERE                    -- der Tabelle plz, der dem Kriterium  
    plz.name = 'berlin'  -- passender Stadtname erfüllt,  
AND                      -- jeder  
    tarif.nr < 7         -- gewünschte Tarif zugeordnet werden.  

keine verschachtelten Schleifen mit SQL-Statements innerhalb der Schleifen :-)

siehe MySQL-Handbuch, INSERT ... SELECT-Syntax

Freundliche Grüße

Vinzenz