【发布时间】:2015-05-29 21:59:57
【问题描述】:
我正在将查询从 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]列无效 名称'从 cms_audittrail 中删除事务日期
【问题讨论】:
-
你忘了
this->db_val->query($Query,$this->db_val) or die("Error in Update Query <br> ".$Query."<br>");之前的$ -
不,它在那里。我会把它添加到问题中。
-
你有
id = '1'我认为应该是INT应该是id = 1。 -
@EternalHour 我认为这也可能是一个问题,但不,仍然出现相同的错误。
-
请显示方法
query($Query, $this->db_val),也请提供来自query方法的var_dump($Query)。
标签: php sql-server pdo