Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php将数组插入mysql_Php_Mysql_Sql_Arrays - Fatal编程技术网

使用php将数组插入mysql

使用php将数组插入mysql,php,mysql,sql,arrays,Php,Mysql,Sql,Arrays,我有两个文本字段,要求用户输入两个限制为49个数字的数字,这样我就可以有一个1到50的数字数组,151到200的数字数组,27551到27600的任何数字,但一系列的49个连续数字,我的问题是我不知道如何将它们放入数据库中,我不知道我一直在搜索关于插入数组的所有信息,但它们在我的案例中不起作用 这是我的表格 <form id="form3" name="form1" method="post" action=""> <p>From: <input

我有两个文本字段,要求用户输入两个限制为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,因此我的表1基本上有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++;
}
?>


我不知道如何插入数据的

这里有一个关于在php中使用mysql的教程,特别是insert命令。只需将数据构建到变量中,而不是回显它,然后按照指南与数据库交互即可

下面是为每个数组元素生成主ID的自动增量教程

通过构建多个插入sql字符串,可以大大提高插入的速度,并在一次提交中完成。。然后使用上面的插入向导运行它

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

您可以使用
json\u encode($myArray\u series\u of\u number)
将其存储为json字符串,而不是将其存储为数组(因为您希望将其存储为大容量,我假设它不会涉及任何直接的数据库级聚合或计算)。这使您可以灵活地将它们存储为字符串列,当您检索回来时,您可以使用
json\u decode($model->series\u of\u numbers\u column,true)
将其作为数组返回,以便在PHP中轻松计算

希望这有帮助

$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,这样您就可以使用参数化查询,而不是将字符串替换到查询中。那么你就不需要像那样逃避这些值。

你是在寻找
内爆()
?如果
中的
两个
总是相距49,为什么用户需要输入这两个数字?只要输入第一个或最后一个数字,然后计算另一个。我有所有的连接和东西。我只是需要关于如何插入数据的帮助,我不认为内爆会起作用,我只需要将一系列数字以不同的主id插入数据库中,这就是你需要做的,只需编写一个循环,将每个数字插入新行。@Barmar它以前是任意数字,但我将其限制为49,以减少用户输入错误。我希望它灵活,以便在用户想要1-100系列时可以更改它。是的,我知道基本插入,但如何将变量$number插入数据库$number保存系列属于numbers@user3282248在你澄清了Abishek的答案之后,你可以很容易地使用一个自动递增表来完成这项工作。。。只需像通常将它们与外键关联一样插入即可。。主自动递增键将使它们保持分离a我的主id有自动递增键,但我这里的问题是,我如何只需一次提交就可以插入所有数字的记录,每个系列是新行还是每个系列只有一行?是的,@clancer,answer应该可以帮助您通过一次插入调用进行多个插入,禁止使用
for循环
插入
如果您确定
批量插入
,如果您想对每个插入执行任何操作,则必须使用@Barmar的应答器,因为我不会将它们作为数组存储在数据库中,我只需要将它们放在datbase中,每个都有不同的主id,而不是作为一个数组。您可以展示一个示例,说明它在DB中的外观。这可能有助于理解您到底在寻找什么?通过查看这段代码,我认为这将引导我找到正确的路径,感谢barmar将对此进行测试并接受答案。mysql_real_escape_string()希望参数1为string,数组给定我得到这个$waybill和$status见我上面的评论,关于在这些输入名称后不需要括号。谢谢barmar,你给我的代码我马上就到了。只是一些关于变量未定义的小问题。