2016-08-18 4 views
3

Ich erstelle derzeit eine Tabelle in PHP, die alle Datenzeilen aus einer der Tabellen in meiner Datenbank anzeigt. Danach möchte ich alle Zeilen aus der PHP-Tabelle in eine neue Datenbanktabelle speichern. Aber das Problem ist, nach dem Speichern wird nur die letzte Zeile in der neuen Tabelle in der Datenbank gespeichert, die andere Zeile von Anfang wird nicht gespeichert. Kann mir jemand helfen. Ich möchte die Foreach versuchen, aber kann mir jemand beibringen.So fügen Sie mehrere Zeilendaten in die Datenbank ein PHP

<table border="1" align="center" cellspacing="0"> 
<tr> 
    <td colspan="12"><div align="center"> 
     <h3><strong>BOOKS</strong></h3> 
    </div></td> 
</tr> 
<tr> 
    <td width="80"><div align="center">Code</div></td> 
    <td width="40"><div align="center">No</div></td> 
    <td width="250"><div align="center">Name</div></td> 
    <td width="100"><div align="center">Publisher</div></td> 
    <td width="80"><div align="center">Price</div></td> 
    <td width="60"><div align="center">Quantity</div></td> 
</tr> 

<?php do { ?> 
    <tr> 
    <td><div align="center"> 
     <input name="student_no" type="hidden" id="student_no" value="<?php echo $row_UserDetails['student_no']; ?>" /> 
     <input name="book_code" type="text" id="book_code" value="<?php echo $row_book_booking_list['book_code']; ?>" size="8" readonly="readonly" /> 
    </div></td> 
    <td><div align="center"> 
     <input name="book_no" type="text" id="book_no" value="<?php echo $row_book_booking_list['book_no']; ?>" size="1" readonly="readonly" /> 
    </div></td> 
    <td><div align="center"> 
     <input name="book_name" type="text" id="book_name" value="<?php echo $row_book_booking_list['book_name']; ?>" size="31" readonly="readonly" /> 
    </div></td> 
    <td><div align="center"> 
     <input name="book_publisher" type="text" id="book_publisher" value="<?php echo $row_book_booking_list['book_publisher']; ?>" size="10" readonly="readonly" /> 
    </div></td> 
    <td><div align="center"> 
     <input name="book_price" type="text" id="book_price" value="<?php echo $row_book_booking_list['book_price']; ?>" size="7" readonly="readonly" /> 
    </div></td> 
    <td><div align="center"> 
     <select name="book_quantity" id="book_quantity"> 
     <option value="0">0</option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
     <option value="5">5</option> 
     <option value="6">6</option> 
     <option value="7">7</option> 
     <option value="8">8</option> 
     <option value="9">9</option> 
     </select> 
    </div></td> 
    </tr> 
<?php } while ($row_book_booking_list = mysql_fetch_assoc($book_booking_list)); ?> 
</table> 

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { 
$insertSQL = sprintf("INSERT INTO book_booked_list (student_no, book_code, book_no, book_name, book_publisher, book_price, book_quantity) VALUES (%s, %s, %s, %s, %s, %s, %s)", 
        GetSQLValueString($_POST['student_no'], "int"), 
        GetSQLValueString($_POST['book_code'], "text"), 
        GetSQLValueString($_POST['book_no'], "text"), 
        GetSQLValueString($_POST['book_name'], "text"), 
        GetSQLValueString($_POST['book_publisher'], "text"), 
        GetSQLValueString($_POST['book_price'], "double"), 
        GetSQLValueString($_POST['book_quantity'], "int")); 

mysql_select_db($database_book_con, $book_con); 
$Result1 = mysql_query($insertSQL, $book_con) or die(mysql_error()); 
} 
+0

Also versuchen Sie Zeilen von einer Datenbank in eine andere zu kopieren? Wenn das der Fall ist, würde ich vielleicht hier nachschauen: http://stackoverflow.com/questions/2821517/how-copy-rows-from-one-table-to-another-table –

+1

Ich würde auch mysql vermeiden und mysqli benutzen stattdessen –

+0

tatsächlich, kopieren Sie die Zeile von einem in den anderen, aber mit der Aktualisierung der Daten. Um so einfach zu sein, ist die erste Datenbanktabelle eine Buchtabelle, die zweite Datenbanktabelle ist für das Buch, das gebucht wurde. 1. Tabelle zeigt nur an, welche Bücher gebucht werden müssen. Bei der zweiten Tabelle werden alle gebuchten Bücher von jedem Schüler nach ihrer Schülernummer unterschieden. – black

Antwort

3

Um alle Zeilen source_table-book_booked_list Tabelle zu kopieren, führen Sie einfach die Abfrage unter:

INSERT INTO book_booked_list 
    (student_no, book_code, book_no, book_name, book_publisher, 
     book_price, book_quantity) 
SELECT 
    student_no, book_code, book_no, book_name, book_publisher, 
     book_price, book_quantity 
FROM source_table 

source_table Ersetzen mit dem Namen der Tabelle Sie Daten aus kopieren.

+0

Muss ich hier etwas ändern, um mehrere Zeilen in Datenbanken zu speichern? – black

+0

$ insertSQL = sprintf ("INSERT INTO book_booked_list (Schüler_Nr, Buch_Kode, Buch_Nr, Buch_Name, Buch_Publisher, Buch_Preis, Buch_Menge) WERTE (% s,% s,% s,% s,% s,% s,% s)", GetSQLValueString ($ _ POST ['Schüler_Nr'], "int"), GetSQLValueString ($ _ POST ['Buch_code'], "Text"), GetSQLValueString ($ _ POST ['Buch_Nr'], "Text"), GetSQLValueString ($ _ POST [ 'book_name'], "text"), – black

+0

@black Nein, Sie müssen keine Werte angeben und Sie müssen nicht '$ _POST' verwenden. Führen Sie einfach die Abfrage aus, die ich Ihnen gegeben habe, nachdem Sie' source_table' durch die Tabelle ersetzt haben du kopierst aus der. Die DB wird alles für dich behandeln, es wird alle Zeilen von einer Tabelle in die andere kopieren. – BeetleJuice

-1

Ihre DO ... WHILE-Schleife erzeugt Eingabefelder mit identischen Namen: Alle Studentennummernfelder haben den Namen "student_no", so dass nur die letzten Formularwerte gespeichert und zur Verarbeitung gesendet werden.

Wenn Sie mehrere Zeilen einfügen möchten, müssen Sie stattdessen Arrays verwenden: replace "student_no" durch "student_no []", "book_code" durch "book_code []" usw. Dann auf der Serverseite loop durch die Felder jede Zeile einzeln einzufügen:

$stuno = $_POST['student_no']; 
$bookcode = $_POST['book_code']; 
.... etc... 
for($i=0; $i < count($stuno); $i++){ 
    $sql = "INSERT INTO book_booked_list (student_no, ....) 
    VALUES ($stuno[$i])" 
} 

natürlich gibt es effizientere Wege sind, das zu tun, und Sie sollten Ihre Formularwerte vor dem Einsetzen in die Datenbank sanieren. Dies dient nur dazu, Sie mit Arrays zu beginnen.

+0

muss ich immer noch die GetSQLValueString ($ _ POST ['Student_no'], "Int"), etc .. – black

+0

für ($ i = 0; $ i black

+0

zu diesem ändern aber Fehler sagte "unerwartet 'mysql_select_db'" – black

Verwandte Themen