MSSQL PHP 无法删除行
MSSQL PHP cannot delete rows
首先对不起我的英语。
我试图删除/插入一些行到 MSSQL Table 但我没有收到任何错误,但它不起作用。但是,当我执行 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 服务器的管理员,但 Web 服务器在另一台 PC 上。
我创建了用户并分配了角色 db_owner
当我在另一个 SQL 服务器上尝试相同的查询时,它有效。
我也试过了:
$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);
和回显 return 0,但是当我从 SSMS 检查时,记录仍然存在。
DELETE SCHEMA.TABLE; SELECT * FROM SCHEMA.TABLE;
returns 0 行。然后我再试一次
SELECT * FROM dbo.import;
returns 26 行。
编辑 2
解决方案是未提交事务。查看评论...
编辑
我的回答不切题...我必须承认,我从来没有在没有 FROM
的情况下使用过 DELETE
,但这显然有效:
create table #tbl(id int);
insert into #tbl values(1),(2);
select * from #tbl;
delete #tbl;
select * from #tbl;
drop table #tbl;
由于评论,我把答案放在那里...
好的,我刚刚在网上搜索找到了答案。
Shnugo 中提到的回滚并在查询开头添加 SET IMPLICIT_TRANSACTIONS OFF;
解决了问题。
谢谢
首先对不起我的英语。 我试图删除/插入一些行到 MSSQL Table 但我没有收到任何错误,但它不起作用。但是,当我执行 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 服务器的管理员,但 Web 服务器在另一台 PC 上。 我创建了用户并分配了角色 db_owner 当我在另一个 SQL 服务器上尝试相同的查询时,它有效。
我也试过了:
$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);
和回显 return 0,但是当我从 SSMS 检查时,记录仍然存在。
DELETE SCHEMA.TABLE; SELECT * FROM SCHEMA.TABLE;
returns 0 行。然后我再试一次
SELECT * FROM dbo.import;
returns 26 行。
编辑 2
解决方案是未提交事务。查看评论...
编辑
我的回答不切题...我必须承认,我从来没有在没有 FROM
的情况下使用过 DELETE
,但这显然有效:
create table #tbl(id int);
insert into #tbl values(1),(2);
select * from #tbl;
delete #tbl;
select * from #tbl;
drop table #tbl;
由于评论,我把答案放在那里...
好的,我刚刚在网上搜索找到了答案。
Shnugo 中提到的回滚并在查询开头添加 SET IMPLICIT_TRANSACTIONS OFF;
解决了问题。
谢谢