首页 > 解决方案 > 相同的数据节省了两次?

问题描述

嗨,我正在将数据插入数据库,它保存了两次相同的数据,只有用户名保存了两次我只想保存一次,我也想保存地址

<?php

    $users = array("username"=>"Kaleem", "adrress"=>"abc");

class dbase{

    public function dbinsert($table,$users)
    {
        foreach ($users as $key => $value) 
        {
            $sql = "INSERT INTO $table (`$key`) VALUES ('$value')";
            $this->conn->query($sql);
            if($this->conn->query($sql))
            {
                echo "Data inserted";
            }
        }
    }

        public function __construct ()
        {

            $this->conn = new mysqli('localhost','root','','dbase');

            if($this->conn)
            {
                echo "Connected<br>";
            }
        }


}

$obj = new dbase;
$obj->dbinsert('users',$users);
?>

标签: php

解决方案


问题是您两次调用查询函数。

            $this->conn->query($sql); // saves the first time
            if($this->conn->query($sql)) // saves the second time
            {
                echo "Data inserted";
            }

为避免查询被调用两次,您可以将查询结果保存到变量中并在 if 中检查它。

目前,您将 users 数组的每个字段保存在自己的数据集中,因为您正在从 foreach 循环中调用每个字段的查询函数。

尝试这个:

<?php

    $users = array( // this array is for the users
                   array("username"=>"Kaleem", "adrress"=>"abc"), // this is one user
                   array("username"=>"Mickey Mouse", "adrress"=>"Test street"),
                   );

class dbase{

    public function dbinsert($table,$users)
    {
        foreach ($users as $key => $value) 
        {
            // Extract field names
            $fields = implode("`, `", array_keys ( $users[$key] );
            // Extract values
            $values = implode("', '", array_values ( $users[$key] );

            $sql = "INSERT INTO $table (`" . $fields  . "`) VALUES ('". $values ."')";
            // Check if query was succesfull
            $success = $this->conn->query($sql);
            if($success)
            {
                echo "Data inserted";
            } else { // if no success display error message
                echo "Error while saving";
            }
        }
    }

        public function __construct ()
        {

            $this->conn = new mysqli('localhost','root','','dbase');

            if($this->conn)
            {
                echo "Connected<br>";
            }
        }


}

$obj = new dbase;
$obj->dbinsert('users',$users);
?>

推荐阅读