MSSQL PHP无法删除行

时间:2016-03-16 09:42:06

标签: php sql-server tsql rows

首先抱歉我的英语。 我试图删除/插入一些行到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);

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

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

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

SELECT * FROM dbo.import;

返回26行。

2 个答案:

答案 0 :(得分:2)

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

谢谢

答案 1 :(得分:1)

编辑2

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

修改

我的回答是不对的......我必须承认,我没有使用DELETE而没有使用FROM,但这很明显:

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

由于评论,我在那里给出答案......