使用php将数组插入mysql

时间:2014-02-07 03:45:52

标签: php mysql sql arrays

我有两个文本字段要求用户输入两个限制为49个数字的数字,这样我就可以拥有1到50,或151到200,或27551到27600任意数字的数组,但是一系列49个连续的数字,我的问题是我不知道如何把它们放在数据库中,我不知道我一直在搜索关于插入数组的一切,但它们不适用于我的情况,

这是我的表单

 <form id="form3" name="form1" method="post" action="">
    <p>From:
    <input type="text" name="from" id="form_number" class="from" /> 
    - To:
    <input type="text" name="to" id="form_number" class="to" />
    </p>
    <p>Waybill Booklet:
    <select name="waybill_booklet[]" id="form_list">
        <?php
            do {  
        ?>
        <option value="<?php echo $row_Booklet['id_waybill_booklet']?>"><?php echo $row_Booklet['booklet_no']?></option>
        <?php
            } while ($row_Booklet = mysql_fetch_assoc($Booklet));
            $rows = mysql_num_rows($Booklet);
            if($rows > 0) {
            mysql_data_seek($Booklet, 0);
            $row_Booklet = mysql_fetch_assoc($Booklet);
            }
        ?>
    </select>
    </p>
    <p>
    <input type="hidden" name="status[]" value="4" />
    <input type="submit" name="button" id="form_button" value="OK!" />
    </p>
</form>

49系列的连续数字将被插入到数据库中,其中包含从下拉菜单中选择的外键,以及隐藏字段中的值4,所以基本上我的表中有4列1对于一系列数字的主键1和对于外键的一个,最后一个将是数字的值。

这是我获取一系列数字的PHP代码

<?php
$booklet = $_POST['waybill_booklet'];
$status = $_POST['status'];
$from = $_POST['from'];
$to = $_POST['to'];
$number = range($from,$to);

$count = 0;
$myArray = range($from,$to);
while($count<=49){
if($count<49){
    echo $myArray[$count]. ", ";
}else{
    echo $myArray[$count];
}
$count++;
}
?>

我不知道如何插入数据

3 个答案:

答案 0 :(得分:1)

不是将其存储为数组(因为您希望将其存储为批量,我认为它不会涉及任何直接的数据库级聚合或计算),您可以使用json_encode($myArray_series_of_numbers)将其存储为json字符串。这使您可以灵活地将它们存储为字符串列,当您将其检索回来时,可以使用json_decode($model->series_of_numbers_column,true)将其作为数组返回,以便在PHP中轻松进行计算。

希望这有帮助

答案 1 :(得分:1)

$waybill = mysql_real_escape_string($_POST['waybill_booklet'][0]);
$status = mysql_real_escape_string($_POST['status'][0]);
foreach (range($from, $to) as $number) {
    $sql = "INSERT INTO yourTable (id, waybill, status) VALUES($number, '$waybill', '$status')");
    mysql_query($sql) or die(mysql_error());
}

您还应该切换到PDO或mysqli,这样您就可以使用参数化查询而不是将字符串替换为查询。然后你不需要像那样逃避这些值。

答案 2 :(得分:0)

这是一个关于在php http://www.w3schools.com/php/php_mysql_insert.asp中使用mysql的教程,特别是INSERT命令。只需将数据构建为变量而不是回显它,然后按照指南与数据库进行交互

这是一个自动增量教程,用于为每个数组元素http://www.w3schools.com/sql/sql_autoincrement.asp

生成主要ID

您可以通过构建多个插入sql字符串来大大提高插入速度并在一次提交中执行..然后使用上面的插入指南来运行它。

INSERT INTO Table ( Column1, Column2 ) VALUES
( Value1, Value2 ), ( Value1, Value2 )