将数组传递给execute()函数,PHP PDO

将数组传递给execute()函数,PHP PDO,php,pdo,prepare,Php,Pdo,Prepare,我正在努力学习PHP PDO。我刚刚创建了一个函数,用于向数据库插入一些数据。但它给了我一些错误,数据无法插入 下面是我的action.php页面中的代码 $query = "INSERT INTO `details` (`name`, `email`, `pass`) VALUES(?,?, ?)"; $params = array($name, $email, $pass); $result = $connect -> query($query, $params); 这是config

我正在努力学习PHP PDO。我刚刚创建了一个函数,用于向数据库插入一些数据。但它给了我一些错误,数据无法插入

下面是我的action.php页面中的代码

$query = "INSERT INTO `details` (`name`, `email`, `pass`) VALUES(?,?, ?)";
$params = array($name, $email, $pass);
$result = $connect -> query($query, $params);
这是config.php中的代码

public function query($query, $params){
    $stmt = self::$db->prepare($query);
    $this -> result = $stmt -> execute($params);
    self::$db = NULL;
    return $this -> result;
}
public function query($query){
$this->result = self::$db->query($query);
self::$db = NULL;
return $this -> result;
}
这将返回错误

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: mode must be an integer' in E:\wamp\www\test\pdo_test\action.php on line 14
我只是这方面的新手。另一个代码适用于我和插入的数据。那是

Action.php

$query = "INSERT INTO `details` (`name`, `email`, `pass`) VALUES('$name', '$email', '$pass')";
$result = $connect ->query($query);
config.php

public function query($query, $params){
    $stmt = self::$db->prepare($query);
    $this -> result = $stmt -> execute($params);
    self::$db = NULL;
    return $this -> result;
}
public function query($query){
$this->result = self::$db->query($query);
self::$db = NULL;
return $this -> result;
}

我正在尝试使用
prepare()
execute()
来转换它。有人请帮忙。提前感谢

让我向您推荐这种方法,
我写这封信时考虑到了你的具体情况

  • 由于执行返回self,这将使您的query()函数变得不必要
  • 多亏了单例实现,它将使您避免许多连接错误,例如
    self::$db=NULL
虽然您的代码仍将保持干净简洁:

$query = "INSERT INTO `details` (`name`, `email`, `pass`) VALUES(?,?, ?)";
$params = array($name, $email, $pass);
$result = DB::prepare($query)->execute($params);

对于问题中的特定问题,$connection很可能包含PDO实例,而不是您自己的类实例,错误消息清楚地表明了这一点。

感谢您的回复。但这些变化没有产生任何效果。它仍然显示如上所示的错误。我不明白发生了什么,你说的是什么变化?你真的把答案当作必须直接复制粘贴到文件中的代码源吗?“公共函数查询($query,$params){$this->result=self:$db->prepare($query)->execute($params);self:$db=NULL;返回$this->result;}“我看到了,我像这样修改了代码。我没有问题了。