2010-12-10 11 views
0

Ich habe eine Rezept Tabelle und Zutat Tabelle der Primärschlüssel der beiden Tabellen sind automatische Inkrementierung und Primärschlüssel des Rezepts ist Fremdschlüssel in Zutat. Ich poste Daten von HTML zu PHP. Beachten Sie, dass meine Zutaten Textfelder dynamisch generiert werden und erfolgreich die Daten in PHP-Skript veröffentlichen. Posted-Daten sind korrekt, wenn ich diese Daten einfügen, um meine Abfrage funktioniert gut, aber Daten nicht zu MySQL-Tabelle hinzugefügt. mein Code und Ausgang istEinfügen Abfrage fügt keine Daten in Mysql-Datenbank Tabelle

$sql = "insert into recipe (rec_id, Name, Overview,category, Time, Image) values ('', '$name','$overview','$category','$time','$TARGET_PATH')"; 
    $result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error()); 
     $rec_id = mysql_insert_id();

und für Bestandteil

$ingredient = $_POST['ingredient']; 
$amount = $_POST['amount']; 
$integer = 0; 
while (count($ingredient)>$integer) { 
if (($ingredient[$integer] <> "") && ($amount[$integer] <> "")){ 
$sql = "INSERT INTO `cafe`.`ingredients` (`ingredient_id`, `ingredient_name`, `ammount`, `rec_id`,) 
    VALUES ('', '".$ingredient[$integer]."', '".$amount[$integer]."', '$rec_id')"; 
mysql_query($sql); 
echo $sql."
"; } else{ echo "ingredient number ".($integer+1)." is missing values and cannot be inserted."; } $integer = ($integer + 1); }

, wenn ich die Abfragen des aus

nsert into recipe (rec_id, Name, Overview,category, Time, Image) values ('', 'demo recipe','no overview','meal','10/12/10 : 13:02:33','http://www.localhost/cafe/pics/demo.gif') 
INSERT INTO cafe.ingredients (ingredient_id, ingredient_name, ammount, rec_id,) VALUES ('', 'ingredient one', '3gm', '29') 
INSERT INTO cafe.ingredients (ingredient_id, ingredient_name, ammount, rec_id,) VALUES ('', 'ingredient two', '3gm', '29') 
INSERT INTO cafe.ingredients (ingredient_id, ingredient_name, ammount, rec_id,) VALUES ('', 'ingredient three', '3gm', '29')

ist gesetzt Echo, aber wenn ich die MySQL-Tabelle oder retriew Daten aus Zutat zu sehen ist keine Daten in Zutat.

+0

können Sie bitte die Definitionen für das Rezept schreiben und die Zutat in Ordnung sein Tabelle? –

+0

'Menge' ist buchstabiert' Menge' –

Antwort

0

Es scheint ein Syntaxfehler in Ihrem Code zu sein:

if (($ingredient[$integer] "") && ($amount[$integer] "")) 
          ^^       ^^ 

Sieht aus wie Sie einen Vergleichsoperator fehlen.

+0

Heu das ist nicht so, es ist tatsächlich: if (($ Zutat [$ Integer] <> "") && ($ Betrag [$ Integer] <> "")) – hunter

+2

das auch und Sie überprüfen nicht, ob es Fehler bei der Einfügeabfrage gab. Bitte schaue dir an, wie du es mit mysql_error() überprüfen kannst, zum Beispiel, wenn du eine automatische Erhöhung von ingredient_id hast, schickst du eine Null-Zeichenfolge, die einen Fehler wirft, weil becouse ingredient_id eine Zahl sein sollte oder wenn du es willst auto_increment sende keine ingredient_id. –

0

Wenn der Einsatz doesnt throw Ausnahmen und doesnt Einsatzdaten gibt es glaube ich ein paar Optionen

1) Sie Transaktion irgendwo verwenden und Rollback es 2) Ihre Auswahlabfrage ist schlecht und Daten ist da, aber man einfach wählen Sie es nicht

+0

aber wenn ich Daten in phpmyadmin überprüfte, gibt es keine Aufzeichnung für Zutat – hunter

+0

gut 1) suche nach uncommitted Transaktionen 2) versuche, alles von ingridents Tabellen zu löschen und deinen Code laufen zu lassen, dann wähle * von dort aus, wenn keine Ausnahmen geworfen würden Ich brauche eine magische Lösung für eine dritte Lösung –

+0

Ich lösche alle Datensätze aus Rezept und Zutaten Tabelle, aber immer noch Rezept hinzufügen, aber die Zutaten nicht zu der Tabelle und Abfragen sind korrekt – hunter

2

Sie haben eine zusätzliche , nach rec_id.

Entfernen Sie es, so sieht es aus wie

INSERT INTO cafe.ingredients (ingredient_id, ingredient_name, ammount, rec_id) VALUES ('', 'ingredient one', '3gm', '29') 

Und Sie werden

0

entfernen cafe aus der Abfrage

$sql = "INSERT INTO ingredients (`ingredient_id`, `ingredient_name`, `ammount`, `rec_id`,) 
    VALUES ('', '".$ingredient[$integer]."', '".$amount[$integer]."', '$rec_id')"; 
Verwandte Themen