我正在将查询从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日''
答案 0 :(得分:2)
从$this->db_val->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
开始,我假设$this->db_val
是PDO
类的实例或扩展或包装它的东西。
如果是PDO
的实例,为什么要将$this->db_val
放到PDO::query
方法?
应该是:
$this->db_val->query($Query);
请参阅 PDO::query 。