【发布时间】:2016-05-12 10:22:07
【问题描述】:
我有下表:
CREATE TABLE [dbo].[TestDB] (
[col1] INT NOT NULL,
[col2] VARCHAR(50) NOT NULL
);
现在我想添加条目:
$params=array(123,'someString');
$sql = "insert into testDB values(?,?)";
$stmt = sqlsrv_query( $conntask, $sql ,$params);
if( $stmt === false) {
echo $sql;
print_r($params);
die( print_r( sqlsrv_errors(), true) );
}
如果有错误,$stmt 将为 false,将打印消息并终止脚本。
我的问题
如果我想添加多个条目,我将同时发送所有查询。
$params=array(123,'someString','notANumber','someOtherString');
$sql = "insert into testDB values(?,?) insert into testDB values(?,?)";
$stmt = sqlsrv_query( $conntask, $sql ,$params);
if( $stmt === false) {
echo $sql;
print_r($params);
die( print_r( sqlsrv_errors(), true) );
}
在这个例子中,第一次插入会成功,第二次插入会失败,因为我试图将一个字符串放在一个 int 列中。
现在 $stmt 不为假,查询会一直执行,直到错误发生。
我的问题:
- 如何随时检查查询是否失败?
- 如何确保查询是全部执行还是根本不执行?
【问题讨论】:
-
使用
INSERT INTO table VALUES (?,?), (?,?), (?,?)...语法 -
谢谢,我不知道你能做到这一点。但这只会解决这个确切的问题。如果我想做一个插入然后更新怎么办?还是更新和删除?或者...
-
那你一个一个地做。如果您担心性能,那么您可以使用事务。但只有在执行大量查询时才有意义(或者您需要回滚选项)。