繁体   English   中英

PHP MySQL插入多个数组

[英]PHP MySQL Inserting multiple arrays

晚上好,可爱的人,

我的查询有问题。 查询应插入在页面上输入的每个产品。 我的表产品有4个字段:id,product_name,数量和价格。

HTML看起来像这样:

<form action="" method="post">

    Product name: <input type="text" name="product_name[]" value="" />
    Quantity: <input type="text" name="quantity[]" value="" />
    Price: <input type="text" name="price[]" value="" /> <br /> <br />

    <input type="submit" name="submit" value="Insert new products" />

</form>

我希望用户能够将新产品插入我们的数据库表产品中 顺便说一句,我创建了一个javascript函数,该函数将更多字段添加到表单中,因此我的员工不必每次想添加新产品时都提交表单,而只需添加他或她尽可能多的字段需要提交。 希望你能知道我在说什么:)

由于我不是PHP编码方面的专家,所以我自己尝试了一下,在我看来,这种方法效果不佳。 当然,我已经在网络上阅读了一些有关查询数组数据的文章,可惜没有运气。

到目前为止,PHP代码如下所示:

<?
if(isset($_POST['submit'])){
    $product_name = addslashes($_POST['product_name']);
    $quantity     = addslashes($_POST['product_name']);
    $price        = addslashes($_POST['product_name']);

    $db->query("INSERT INTO products (product_name, quantity, price) VALUES ('".$product_name."', '".$quantity."', '".$price."')");
}
?>

如果我的员工必须一个接一个地插入每个产品,这不是问题。 但是由于他们可以在表单中添加更多字段,所以这成为一个问题。

希望有一个合乎逻辑的解释,但我不能自己弄清楚。 当然,我知道我还没有转义我的变量,但是这段代码仅用于测试目的。 祝大家晚上好:)

您需要遍历数组$_POST['product_name']中的所有值,并对数组的每个成员发出一次数据库插入查询。 每个字段集的表单数据都以PHP数组的形式提交和处理,例如:

$ _POST ['product_name'] = array(0 =>'名字',1 =>'名字',2 =>'名字'等)

这是代码:

if(isset($_POST['submit'])){
    $ct=0;
    foreach( $_POST['product_name'] as $k=> $value ){ // loop through array
        $product_name = addslashes( $value );  // set name based on value
        $quantity     = addslashes($_POST['quantity'][$ct] ); // set qty using $ct to identify # out of total submitted
        $price        = addslashes($_POST['price'][$ct] ); // same as set qty

        $db->query("INSERT INTO products (product_name, quantity, price) VALUES ('".$product_name."', '".$quantity."', '".$price."')");
        $ct++; // increment +1
    }
}

要更新(而不是INSERT),您需要在HTML中传递ID号和输入字段。

<input type="hidden" name="modify_id[]" value="7" />
Product name: <input type="text" name="product_name[]" value="" />
Quantity: <input type="text" name="quantity[]" value="" />
Price: <input type="text" name="price[]" value="" /> <br /> <br />

然后使用PHP:

if(isset($_POST['submit'])){
    $ct=0;
    foreach( $_POST['product_name'] as $k=> $value ){ // loop through array
        $product_name = addslashes( $value );  // set name based on value
        $quantity     = addslashes($_POST['quantity'][$ct] ); // set qty using $ct to identify # out of total submitted
        $price        = addslashes($_POST['price'][$ct] ); // same as set qty

        $id           = (int)$_POST['modify_id'][ $ct ];

        $db->query("UPDATE products SET product_name = '$product_name', quantity = '$quantity', price = '$price' WHERE id = '$id' LIMIT 1");
        $ct++; // increment +1
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM