SQL存储过程在PHP上无法正常工作

时间:2017-02-22 13:09:21

标签: php sql sql-server stored-procedures

我在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;保存在数据库中。

0 个答案:

没有答案