PDO更新查询不会运行,但它在sql studio上运行

时间:2015-03-26 00:33:51

标签: php sql-server pdo

我正在将查询从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);

我收到了这个错误:

  

带有消息'SQLSTATE [42S22]的未捕获异常'PDOException':   [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应用程序工作。我得到了:

  

带有消息'SQLSTATE [42S22]的未捕获异常'PDOException':   [Microsoft] [SQL Server Native Client 11.0] [SQL Server]无效列   name'DELETE FROM cms_audittrail WHERE transactiondate&lt; =   '2015年2月26日''

1 个答案:

答案 0 :(得分:2)

$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