使用 php 将数组保存在 mysql 中


Saving array in mysql using php

>我有这个表单,其中我有一个选择列表和两个文本框,可以动态添加以形成多行。场景是我将有一个选择值和多个文本框值。我想保存这个是mysql表,它有三列:SelectValue,TextBox1Value和TextBox2Value。 选择值将是相同/重复的,但文本框值应该是唯一的。我尝试了以下php:

include('connection.php');
if(isset($_POST['submit'])){
    $roomId = $_POST['roomno'];
    $rowData = array();
    foreach($_POST['inventoryname'] as $row=>$inventory){
        $inventoryName = mysql_real_escape_string($inventory);
        $inventoryCount = mysql_real_escape_string($_POST['inventorycount'][$row]);
        $rowData[] = "('$inventoryName','$inventoryCount')"; 
    }
}
if(!empty($rowData)){
    $insert = mysql_query("INSERT INTO room_inventory_details(RoomId,Inventory,Count) VALUES('$roomId')".implode(',',$rowData));
    if(!$insert){
        die('Error: ' . mysql_error());
    }else{
        echo "Data saved successfullt";
    }
}

这是我的标记

<form action="save_room_inventory.php" method="post" name="reservation-form" id="reservation_form">
    <div class="left-form">
        <label for="roomno"><span>Room No.</span>
            <select name="roomno">
                <option value="">---Please Select---</option>
                <?php
                    include('connection.php');
                    $select_query = mysql_query("SELECT RoomId,RoomName FROM room ORDER BY RoomName");
                    while($rows = mysql_fetch_assoc($select_query)){ ?>
                        <option value="<?php echo $rows['RoomId']; ?>"><?php echo $rows['RoomName']?></option>
                <?php   }
                ?>
            </select>
        </label>
    </div>
    <div class="left-form">
        <input type="button" id="addinventory" Value="Add Inventory">
    </div>
    <div class="inventory-table">
        <div class="detail-table">
            <table class="itemTable" border="1">
                <thead>
                    <th>Inventory</th>
                    <th>Count</th>
                    <th><input type="button" value="Add New Row" id="addNew"></th>
                </thead>
                <tbody>
                    <tr class="cloneme">
                        <td>
                            <input type="text" name="inventoryname[]">
                        </td>
                        <td>
                            <input type="text" name="inventorycount[]">
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
    <div class="event_button">
        <input type="submit" name="submit" value="Save">
        <input type="reset" name="reset" Value="Clear">
        <iframe name="acknowledgement" id="res_frame"></iframe>
    </div>
</form>

保存时出现以下错误:错误:SQL 语法有错误;检查与您的MySQL服务器版本相对应的手册,了解在第1行的"("床","1"),("Cderf","4")附近使用的正确语法

VALUES ('$roomId') 中只有一个值,每个值中只有两个值 $rowData 。所有这些值都需要 3 个值。为此,请将$roomId放入foreach循环中的每个元素中:

foreach($_POST['inventoryname'] as $row=>$inventory){
    $inventoryName = mysql_real_escape_string($inventory);
    $inventoryCount = mysql_real_escape_string($_POST['inventorycount'][$row]);
    $rowData[] = "('$roomId', '$inventoryName','$inventoryCount')"; 
}

那么你INSERT应该是:

$insert = mysql_query("INSERT INTO room_inventory_details(RoomId,Inventory,Count) VALUES ".implode(',',$rowData));

顺便说一句,在分配$roomId时,您也应该使用mysql_real_escape_string