2016-08-18 7 views
3

В настоящее время я создаю таблицу на PHP, которая отображает всю строку данных из одной таблицы в моей базе данных. После этого я хочу сохранить всю строку из таблицы PHP в новую таблицу базы данных. Но проблема в том, что после сохранения только последняя строка будет сохранена в новой таблице в базе данных, другая строка с начала не будет сохранена. Кто-нибудь может мне помочь. Я хочу попробовать предсказание, но кто-то может научить меня.Как вставить несколько данных строк в базу данных из 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

Так вы пытаетесь скопировать строки из одной базы данных в другую? Если это так, я мог бы посмотреть здесь: http://stackoverflow.com/questions/2821517/how-copy-rows-from-one-table-to-another-table –

+1

Я также избегаю mysql и использую mysqli вместо этого –

+0

на самом деле, скопируйте строку из одной в другую, но с обновлением данных. Чтобы быть таким же простым, первая таблица базы данных - это таблица книг, вторая таблица базы данных - для книги, которая была забронирована. 1-й стол показывает только, какие книги нужно забронировать. Вторая таблица будет иметь все забронированные книги от каждого ученика, различающегося по их номеру ученика. – black

ответ

3

Чтобы скопировать все строки из source_table в book_booked_list таблицы, просто выполнить запрос ниже:

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 с именем таблицы вы скопировать данные.

+0

Мне нужно что-то изменить здесь, чтобы разрешить несколько строк сохранения в databse? – black

+0

$ 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"), – black

+0

@black Нет, вам не нужно указывать значения, и вам не нужно использовать '$ _POST'. Просто запустите запрос, который я вам дал после замены' source_table' на таблицу вы будете копировать из. БД будет обрабатывать все для вас, он скопирует все строки из одной таблицы в другую. – BeetleJuice

-1

Ваш цикл DO ... WHILE генерирует поля ввода с одинаковыми именами: все поля номера ученика называются «student_no», поэтому только последний набор значений формы будет сохранен и отправлен для обработки.

Если вы хотите вставить несколько строк, вместо этого вам нужно использовать массивы: замените «student_no» на «student_no []», «book_code» на «book_code []» и т. Д. Затем на стороне сервера цикл через массивы, чтобы вставить каждую строку отдельно:

$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])" 
} 

конечно, есть более эффективные способы сделать это, и вы должны дезинфицировать свои значения формы, прежде чем вставить в вашу базу данных. Это только для того, чтобы вы начали с массивов.

+0

Мне все еще нужно использовать GetSQLValueString ($ _ POST ['student_no'], "int") и т. Д. – black

+0

for ($ i = 0; $ i black

+0

изменение на это, но ошибка сказала «неожиданный» mysql_select_db '" – black

Смежные вопросы