Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 Mysqli查询函数插入重复行_Php_Mysql_Mysqli_Insert_Duplicates - Fatal编程技术网

Php Mysqli查询函数插入重复行

Php Mysqli查询函数插入重复行,php,mysql,mysqli,insert,duplicates,Php,Mysql,Mysqli,Insert,Duplicates,我一直在尝试向mysql db插入新行,但insert(){…}函数插入了重复的行 我也尝试过几种插入方法,但都不起作用。所有方法都插入了重复的行 我怎样才能解决这个问题?你知道吗 谢谢你的帮助和建议 protected $db; public function __construct() { try { $this->db = new mysqli('localhost', 'root', '', 'trigger'); $this->db

我一直在尝试向mysql db插入新行,但insert(){…}函数插入了重复的行

我也尝试过几种插入方法,但都不起作用。所有方法都插入了重复的行

我怎样才能解决这个问题?你知道吗

谢谢你的帮助和建议

protected $db;

public function __construct() {
    try {
        $this->db = new mysqli('localhost', 'root', '', 'trigger');
        $this->db->set_charset("utf8");

    } catch (mysqli_sql_exception $e) {
        throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
    }
}

public function select($table, $rows = "", $where = "", $return_type = "") {
    if (empty($rows)) {
        $rows = "*";
    }
    if (empty($where)) {
        $where = "";
    } else {
        $where = "where " . $where;
    }

    try {
        $query = $this->db->query("SELECT $rows FROM $table $where");
        if ($return_type == "json") {
            return json_encode($query);
        } else {
            return $query;
        }
    } catch (mysqli_sql_exception $exc) {
        return $exc->getMessage();
    }
}

public function insert($table, $params) {
    $_keyArr = array();
    $_valueArr = array();

    foreach ($params as $key => $value) {
        $_keyArr[] .= $key;
        $_valueArr[] .= $value;
    }

    $keys = implode("`,`", $_keyArr);
    $values = implode("','", $_valueArr);

    $query = $this->db->query("INSERT INTO `$table` (`$keys`) VALUES('$values')");

    try {
        return $query;
    } catch (mysqli_sql_exception $ex) {
        return $ex->getMessage();
    }
}
-------------回答马特-------------

我用以下代码打电话:

    if ($this->db->insert("table_name", array("path" => "test", "flow_name" => "test"))) {
        echo 'ok';
    } else {
        echo 'not ok';
    }
-------------帕维尔的答案-------------


“替换为”不起作用。问题再次出现。

只需使用“替换到”而不是“插入到”

$query = $this->db->query("REPLACE INTO `$table` (`$keys`) VALUES('$values')");

请问这个函数怎么叫?这是什么<代码>$\u keyArr[]。=$key$_valueArr[]。=$value仅使用
[]=
而不是
[].=
您发布的代码中的任何内容都不会创建重复项。如果您使用相同的参数多次调用
insert()
函数,它将创建重复项。您的
try/catch
块看起来有点古怪
return$query
将不会引发异常,而
$query=$this->db->query(“插入到“$table”(“$keys”)值(“$VALUES”)非常可能如果您的表没有唯一的列集,那么如果您多次使用相同的测试数据运行,那么没有什么可以阻止它创建重复的行。请为相关表格添加表格定义