【发布时间】:2015-12-17 17:58:12
【问题描述】:
我正在尝试通过 Web 界面将一行插入 Microsoft 动态 RMS 数据库。我可以从 Store Operations Manager(命令行?)运行插入,它工作得很好,但是当我尝试使用 sqlsrv 从我的 PHP 脚本运行它时,它会转储一个 515 错误,说它不能将空值插入 ID 列.
我觉得错误是 sqlsrv 与数据库而不是数据库本身对话,因为我可以直接运行同一行并创建新行。
前几次我用 params 尝试了这个,但为了排除故障,我把它拿出来了。这两种方法我都遇到了同样的错误。
错误信息:
( [0] => 数组 ( [0] => 23000 [SQLSTATE] => 23000 [1] => 515 [代码] => 515 [2] => [Microsoft][SQL Server Native Client 11.0] [SQL Server]无法将值 NULL 插入到列 'ID'、表 'OMGHQ.dbo.Customer';列不允许空值。INSERT 失败。[消息] => [Microsoft][SQL Server Native Client 11.0][SQL服务器]无法将值 NULL 插入到列 'ID'、表 'OMGHQ.dbo.Customer';列不允许空值。插入失败。)[1] => 数组([0] => 01000 [SQLSTATE] => 01000 [1] => 3621 [code] => 3621 [2] => [Microsoft][SQL Server Native Client 11.0][SQL Server]语句已终止。[message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]语句已终止。))
$conn = sqlConnection();
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true));
}
$itlquery = "DECLARE @itemID INT
DECLARE @newQuantity INT
SET @itemID = $itemID
SET @newQuantity = $newQuantity
INSERT INTO inventorytransferlog (itemID, quantity, cashierID, type, cost) VALUES (@itemID, @newQuantity - (SELECT TOP 1 quantity FROM item WHERE id = @itemID), 6, 5, (SELECT TOP 1 cost FROM item WHERE id = @itemID));";
echo $itlquery;
$itlstatement = sqlsrv_query($conn,$itlquery);
if($itlstatement === false)
{
die(print_r(sqlsrv_errors(),true));
}
【问题讨论】:
标签: php html sql-server microsoft-dynamics