PHP将多个复选框和文本框数组插入MySQL数据库?mysql-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

PHP将多个复选框和文本框数组插入MySQL数据库?mysql

保持可爱mmm 2020-05-17 20:23:21 34

我在php中遇到数组结果问题。我的第一个问题是:

在此处输入图片说明

即使未选中该复选框,它也会显示所有内容。我的第二个问题是,即使它已连接到数据库,它也不会将值插入数据库(如您在上一个屏幕快照中看到的那样,它说“ connected success”)。

这是我的html形式:


Price : $17.00
Quantity:
Add to Cart

Price : $20.00
Quantity:
Add to Cart

PHP:

if(isset($_POST['insertBT'])) { class db_conn { public function create_conn($servername, $username, $password, $db) { global $conn; $conn = new mysqli ($servername, $username, $password, $db); }

    public function check_conn()
    {
        global $conn;
        if($conn->connect_error)
        {
            die ("Connection Failed : " . $conn->connect_error);
        }
        else
        {
            echo ("Connected Successfully <br>");
        }
    }

    public function insert()
    {

        if(isset($_POST['checkbox'])) {
            foreach($_POST['checkbox'] as $check) {

                $check = implode(',', $_POST['checkbox']);
                $name = implode(',', $_POST['item']);
                $quantity = implode(',', $_POST['quantity']);
            }
            echo $check . "<br>";
            echo $name . "<br>";
关系型数据库 MySQL PHP 数据库
分享到
取消 提交回答
全部回答(1)
  • 保持可爱mmm
    2020-05-17 20:25:19

    您不应该使用implode。这会将表单中所有内容的逗号分隔列表放入您要插入的每一行中,并对选中的每个框重复此操作。您应该通过索引数组在每行中插入一个项目。

    但是,当您在表单中有一个复选框时,它仅提交已选中的复选框。这样的结果是$_POST['checkbox']数组的索引与对应的$_POST['item']and $_POST['quantity']元素不匹配。您需要在checkbox名称中放入显式索引,以便可以将它们关联起来。


    Price : $17.00
    Quantity:
    Add to Cart

    Price : $20.00
    Quantity:
    Add to Cart

    然后您的PHP代码可以像这样:

    $stmt = $conn->prepare("INSERT INTO purchases (Product, Quantity, Price) VALUES (?, ?, ?)"); $stmt->bind_param("sis", $name, $quantity, $price); foreach ($_POST['checkbox'] as $i => $price) { $name = $_POST['name'][$i]; $quantity = $_POST['quantity'][$i]; $stmt->execute(); } 顺便说一句,将价格放入HTML中似乎是个坏主意。没有什么可以阻止用户在提交表单之前使用Web检查器修改HTML,因此可以降低价格。处理表单时,您应该从数据库中获取价格。

    另外,请注意,在原始代码中,您使用MySQLi打开了数据库连接,但随后尝试使用mysql_query代替进行插入$conn->query()。您不能混合这样的API。myql_query只能在使用打开连接时使用mysql_connect。来源:stack overflow

    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题