【问题标题】:sqlsrv UPDATE statement runs but doesn't update DBsqlsrv UPDATE 语句运行但不更新数据库
【发布时间】:2014-05-19 14:33:54
【问题描述】:

我有一个问题,我的 PHP sqlsrv UPDATE 语句运行并且不返回任何错误,但数据库中没有任何变化,并且该行实际上没有更新。是否有什么我遗漏的东西可以让这个查询看起来成功运行但不更新行?

我已检查更新语句是否在 SQL Server Management Studio 中运行并更新了行。

$visitquery = "UPDATE tblVisit SET CalledInBy='WINNER' WHERE VisitID='3679061'";            

                    $visitClose = sqlsrv_prepare($connect,$visitquery);
                    if( sqlsrv_execute( $visitClose))
                        {
                              echo "Statement executed.\n <br />";
                        }
                        else
                        {
                             echo "Error in executing statement.\n";
                             die( print_r( sqlsrv_errors(), true));
                        } 

【问题讨论】:

  • 你的 where 子句可能没有匹配的行吗?在调用sqlsrv_execute 后尝试sqlsrv_rows_affected($visitClose),看看有多少行受到UPDATE 语句的影响。
  • 知道你有一个记录在哪里VisitID = '3679061'(没有错别字,没有不匹配的数据类型?)
  • 另外,将 db 和 schema 名称添加到语句中的对象中,例如 MAIN.dbo.tblvisit 等。
  • @JonathanAmend 1 行受影响,但数据库中仍然没有更新
  • 有没有机会你在某个地方打电话给sqlsrv_begin_transaction却忘了打电话给sqlsrv_commit

标签: php sql sql-server sqlsrv


【解决方案1】:

感谢@JonathanAmend

sqlsrv_begin_transaction 已打开,但未调用 sqlsrv_commit

http://www.php.net/manual/en/function.sqlsrv-commit.php

【讨论】:

    【解决方案2】:

    确保您的脚本有权访问正确的数据库,否则表不会发生任何事情。

    首先,建立与数据库的连接,然后指定包含您的表的数据库。

    在您的设置中,将此行添加到您的代码上方。

    $connect = sqlsrv_connect(server format goes here,array("Database"=>name of database containing tblVisit in quotes goes here,"UID"=>username to access database goes here,"PWD"=>password to access database goes here));
    

    对于每个值,用引号将它们括起来,因为它们是字符串。

    这里有更多关于如何制作代码的信息:

    See this (at php.net)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 2022-01-02
      • 2014-06-15
      相关资源
      最近更新 更多