【问题标题】:MSSQL PHP cannot delete rowsMSSQL PHP 无法删除行
【发布时间】:2016-07-02 02:32:21
【问题描述】:

首先对不起我的英语。 我试图删除/插入一些行到 MSSQL 表,但我没有收到错误,但它只是不起作用。但是当我执行 SELECT 语句时,它也能正常工作。

$dbhandle = mssql_connect("SERVERNAME", "username", "password") or die("Couldn't connect to SQL Server on $myServer");
$selected = mssql_select_db("myDB", $dbhandle) or die("Couldn't open database $myDB");
mssql_query("DELETE dbo.import");

服务器 SQL INSTANCE 安装在我的本地计算机上,我是此 SQL Server 的管理员,但 Web 服务器在另一台 PC 上。 我创建了用户并分配了角色 db_owner 当我在另一个 SQL Server 上尝试相同的查询时,它可以工作。

我也试过了:

$dbhandle = mssql_connect("SERVERNAME", "username", "password") or die("Couldn't connect to SQL Server on $myServer");
$selected = mssql_select_db("myDB", $dbhandle) or die("Couldn't open database $myDB");
$result = mssql_query("DELETE dbo.import; SELECT * FROM dbo.import;");
$sqlRows = array();
while($row = mssql_fetch_array($result))
{
    $sqlRows[] = $row;
}
echo sizeof($sqlRows);

并且回显返回 0,但是当我从 SSMS 检查时,记录仍然存在。

 DELETE SCHEMA.TABLE; SELECT * FROM SCHEMA.TABLE;

返回 0 行。然后我再试一次

SELECT * FROM dbo.import;

返回 26 行。

【问题讨论】:

    标签: php sql-server tsql rows


    【解决方案1】:

    好的,我刚刚在网上找到了答案。 Shnugo 中提到过回滚,并在查询开头添加 SET IMPLICIT_TRANSACTIONS OFF; 即可解决问题。

    谢谢

    【讨论】:

      【解决方案2】:

      编辑 2

      解决方案是未提交的事务。见 cmets...

      编辑

      我的回答不正确...我必须承认,我从来没有在没有FROM 的情况下使用过DELETE,但这显然有效:

      create table #tbl(id int);
      insert into #tbl values(1),(2);
      select * from #tbl;
      delete #tbl;
      select * from #tbl;
      drop table #tbl;
      

      由于cmets,我把答案放在那里...

      【讨论】:

      • 我在尝试插入新行时遇到了同样的问题。
      • 当我运行 $result = mssql_query("INSERT INTO dbo.import ([Ticket Issue Date]) VALUES (GETDATE()); SELECT * FROM dbo.import");我得到 27 行,但是当我从 SSMS 检查时,我仍然有 26 行
      • @djsony90 这种行为的最常见原因是事务回滚或者您的命令针对错误的服务器/数据库/表运行...(或者您的 SSMS 检查未连接到正确的数据库。可能有助于关闭所有查询窗口并重新打开它们,因为即使您断开连接并重新连接,它们也会保持连接)
      • @djsony90 我认为 mssql_query 不能运行超过 1 个查询。
      • @Shnugo 我刚刚从 SSMS 中删除了 2 行,当我现在从 PHP 尝试时,我有 24 行,所以服务器/数据库/表没问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多