【问题标题】:PDO update query won't run but it runs on the sql studioPDO 更新查询不会运行,但它在 sql studio 上运行
【发布时间】: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-&gt;db_val-&gt;query($Query,$this-&gt;db_val) or die("Error in Update Query &lt;br&gt; ".$Query."&lt;br&gt;");之前的$
  • 不,它在那里。我会把它添加到问题中。
  • 你有id = '1' 我认为应该是INT 应该是id = 1
  • @EternalHour 我认为这也可能是一个问题,但不,仍然出现相同的错误。
  • 请显示方法query($Query, $this-&gt;db_val),也请提供来自query 方法的var_dump($Query)

标签: php sql-server pdo


【解决方案1】:

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

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

应该是:

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

PDO::query

【讨论】:

  • 什么是var_dump($Query) @NaguibIhab?
猜你喜欢
  • 2017-12-02
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 2020-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多