同一数据保存两次? - php

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

<?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);
?>

参考方案

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

            $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);
?>

PHP:从函数返回值并直接回显它? - php

这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…

php-printf和sprintf具有不同的输出 - php

我编写了以下微型php程序来测试printf和sprintf:<?php $str_1 = printf("%x%x%x", 65, 127, 245); $str_2 = sprintf("%x%x%x", 65, 127, 245); echo $str_1 . "\n"; echo $s…

PHP:如何从JSON数组获取属性? - php

我有以下JSON数组:使用PHP,如何从上面的JSON数组中获取geometery->location->lat&lng值?例如(伪代码):<?php $json = { "status": "OK", "results": [ { "types": [ �…

使用jQuery将值增加到attr - php

我想增加i的值。 “ for”循环不起作用。$("a[href$='.xls']").appendTo(".xl1").attr('id','xl'+i); 我搜索所有excel文件,并将它们放在容器中并增加其id的值。谢谢吉恩 参考方案 $("a[…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…