PDO更新查询获胜';t运行,但它在sqlstudio上运行


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

我正在将查询从mysql转换为pdo以在mssql上运行,我有一个让我抓狂的查询:

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);

我得到了这个错误:

未捕获异常"PDOException",消息为"SQLSTATE[42S22]":[Microsoft][SQL Server Native Client 11.0][SQL Server:无效列name'UPDATE cms_users SET lastlogin=GETDATE()WHERE id='1'

不确定哪一个是无效的列名,我试着把列名放在``中,但效果不好。

更新:

如果这有帮助的话,我会用不同的查询得到同样的问题:

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

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

未捕获异常"PDOException",消息为"SQLSTATE[42S22]":[Microsoft][SQL Server Native Client 11.0][SQL Server:无效列name'从cms_audittrail删除WHERE事务日期<"2015-02-26"

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

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

应该是:

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

请参阅PDO::query