在一个查询中插入多个数据库行

时间:2014-01-28 18:23:33

标签: php sql insert duplicates

我知道这听起来像是重复的,但我不打算用一个查询添加多行,我已经有了它的工作。问题是我只需要插入一行。

我有两段代码执行这些操作。 第一个 - 在注册页面上:

$user = DB::getInstance()->insert('users', array(
    'username' => 'Sam',
    'password' => 'password',
    'salt' => 'salt'

));

然后是在单独的php类中实际执行查询的内容:

public function insert($table, $fields = array()) {

    $keys = array_keys($fields);

    $values = '';

    $x = 1;



    foreach($fields as $field) {
        $values .= "?";
        if($x < count($fields)) {
            $values .= ', ';
        }
        $x++;
    }

    $sql = "INSERT INTO {$table} (`" . implode('`, `', $keys) . "`) VALUES ({$values})";
    if(!$this->query($sql, $fields)->error()) {
        return true;
    }
    return false;
}public function query($sql, $params = array()) {
    $this->_error = false;
    if($this->_query = $this->_pdo->prepare($sql)) {
        $x = 1;
        if(count($params)) {
            foreach($params as $param) {
                $this->_query->bindValue($x, $param);
                $x++;
            }
        }

        if($this->_query->execute()) {
            $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
            $this->_count = $this->_query->rowCount();
        } else {
            $this->_error = true;
        }
    }

    return $this;
}

那里有点,但我只想包括一切。这当前正在工作,它将记录输入我的数据库,唯一的问题是它每次输入2。

这是我数据库的屏幕截图:

enter image description here

正如您从ID中看到的那样,我已经讨论了一段时间了。我有一种感觉非常小的东西正在抛弃它,但我似乎无法找到它并需要一双新眼睛的帮助。

1 个答案:

答案 0 :(得分:0)

修正了它。我在Wordpress上运行它,并且运行了header.php文件的第一段代码。事实证明,在某些时候在页面上运行两次,我只需要将代码包含在“页面”中。 (但当然php当然不想在wordpress页面上运行所以我需要使用exec php插件)但无论如何它都是固定的。感谢