PDO 更新查询不会 运行 但它 运行 在 sql 工作室

PDO update query won't run but it runs on the sql studio

我在 mssql 上将查询从 mysql 转换为 pdo 到 运行,这个查询让我抓狂:

UPDATE cms_users SET lastlogin = GETDATE() WHERE id = '1'

出于某种原因,当我 运行 它通过 PHP 应用程序上的 PDO 但当我 运行 它在 Microsoft SQL Server Management Studio 上时它中断了执行。

这是我运行查询的行:

$this->db_val->query($Query,$this->db_val) or die("Error in Update Query <br> ".$Query."<br>");

当我添加一些属性以通过将此代码放入 PDO 中捕获错误时:

$this->db_val->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

我收到这个错误:

Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid column name 'UPDATE cms_users SET lastlogin = GETDATE() WHERE id = '1''

不确定哪个是无效的列名,我尝试将列名放在 `` 中,但效果不佳。

更新:

如果这有帮助,我用不同的查询遇到了同样的问题:

DELETE FROM cms_audittrail WHERE transactiondate <= '2015-02-26'

这也适用于 sql 工作室,但不适用于 php 应用程序。我得到:

Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid column name 'DELETE FROM cms_audittrail WHERE transactiondate <= '2015-02-26''

$this->db_val->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 开始,我假设 $this->db_valPDO class 的实例或扩展它或包装它的东西。

如果是PDO的实例,为什么要把$this->db_val放到PDO::query方法中呢?

应该是:

$this->db_val->query($Query);

参见PDO::query