我在SQL上有一个存储过程,我在PHP代码中包含了这个过程。我的问题是,代码在SQL上运行良好,但每当我在PHP上尝试时,我输入的数据都没有在服务器上提交,但是当我检查SQL分析器时,我可以看到服务器读取存储过程,它&只是我输入的数据没有保存在数据库中。请参阅下面的代码。
addname.php
<?php
include('db_connect.php');
$g_name = $_POST['name'];
$g_user = $_POST['user'];
if(isset($_POST['violating']) && ($_POST['violating'] == '1'))
{
$g_violating = $_POST['violating'];
}
else
{
$g_violating = '0';
}
$g_explanation = $_POST['explanation'];
$g_market = $_POST['market'];
$a_market = implode(',',$g_market);
$g_type = $_POST['type'];
$g_violation = $_POST['violation'];
$a_violation = implode(',',$g_violation);
$q = "exec add_name @name='$g_name', @violating='$g_violating',
@explanation='$g_explanation', @market='$a_market',
@type='$g_type', @violation='$a_violation', @addedBy='$g_user' ";
$params = array();
$query = sqlsrv_query($conn, $q);
header("location:update.php?ac=2");
?>
SQL存储过程:
CREATE PROCEDURE [dbo].[add_name]
@name varchar (MAX),
@market varchar (100),
@explanation varchar (max),
@violating bit,
@violation varchar(500),
@type varchar(100),
@addedby varchar (100)
AS
BEGIN
INSERT INTO nameStore
(name,violating,explanation,market,type,dateAdd,violation,addedBy)
VALUES
(@name, @violating, @explanation, @market, @type, getdate(), @violation, @addedby)
DECLARE @id int = @@IDENTITY
INSERT INTO nshistory
(name,violating,explanation,market,type,dateModified,violation, modifiedby, action, nsid)
VALUES
(@name, @violating, @explanation, @market, @type, getdate(), @violation, @addedby, 'Added', @id)
END
在SQL事件探查器上(例如,我输入了存储过程的数据)
exec add_name @name='Stella ', @violating='1', @explanation='ATL', @market='Fil',
@type='Org Name', @violation='Not Plausible Name', @addedBy='a.gaskarth'
我不知道我的PHP代码中有什么错误,因为每当我尝试在运行中完美地执行sql查询时,但是当我尝试使用php代码时,我输入的数据可以& #39;保存在数据库中。