在课堂上使用UPDATE查询时我很挣扎。其他查询,如SELECT,ALTER工作得很好。查询itsef在phpmyadmin中工作得很好,如果PDO是以程序方式定义的(但与类完全相同),则查询工作正常。苦苦挣扎了几天,现在我只是放弃了我的问题。错误报告已开启
error_reporting(E_ALL);
ini_set('display_errors', 1);
此外,错误报告在创建对象时设置为属性,但没有为UPDATE抛出错误。
Linux Mint 17.3上的环境是localhost。工作代码(但不是UPDATE):
class MySQLDatabase {
private $PDO;
private $error;
private $host = _DB_SERVER_;
private $dbname = _DB_NAME_;
private $user = _DB_USER_;
private $passwd = _DB_PASSWD_;
private $stmt;
public function __construct(){
try {
$this->PDO = new PDO('mysql:host='.$this->host.';dbname='.$this->dbname.';charset=utf8', ''.$this->user.'', ''.$this->passwd.'');
$this->PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
$this->error = $e->getMessage();
}
}
public function update_records(){
$query = 'UPDATE ps_2orders
SET
rozliczone = 1
WHERE
id_order = 1535';
$this->query($query);
$this->execute();
}
public function query($query){
$this->stmt = $this->PDO->prepare($query);
}
public function execute() {
return $this->stmt->execute();
}
现在正在使用代码:
try {
$pdo = new PDO('mysql:host='._DB_SERVER_.';dbname='._DB_NAME_.';charset=utf8', ''._DB_USER_.'', ''._DB_PASSWD_.'');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
exit('Database connection error.');
}
$query = $pdo->prepare("UPDATE ps_2orders
SET
rozliczone = 1
WHERE
id_order = 1535");
$query->execute();
到目前为止我尝试过的方法:主要是调整查询但显然不是导致问题的查询。它必须与对象有关。
非常感谢任何帮助。
答案 0 :(得分:0)
$query = 'UPDATE ps_2orders SET rozliczone=:rozliczone WHERE id_order = :id_order';
$stmt = $this->PDO->prepare($query);
$stmt->execute(array(':rozliczone' => 1, ':id_order' => 1535));
这会奏效。 因为你用:
创建了pdo对象$this->PDO = new PDO('mysql:host='.$this->host.';dbname='.$this->dbname.';charset=utf8', ''.$this->user.'', ''.$this->passwd.'');
$this->PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
因此您必须使用$this->PDO->pdoFunctions
。