如何验证该值是否已存在.PHP



我在MSSQLServer中的存储过程中遇到问题,这是验证已存在值的正确语法吗?

ALTER PROCEDURE [dbo].[sp_SRP_DuplicateData]
-- Add the parameters for the stored procedure here
@BankName nvarchar(50),
@BankCode nvarchar(5)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT BankName, BankCode FROM ZREF_ROUT_INCO_DOC where BankName=@BankName 
and BankCode=@BankCode
END

这是我的php代码

<?php
    if(isset($_POST['SUBMIT']))
    {
       $query = sqlsrv_query($conn, "EXEC sp_SRP_DuplicateData(?,?)");
    if(sqlsrv_num_rows($query)>0)
    {
      echo "Bank Name or Bank Code already exist";
    }
  }
  ?>

这是表格

    <label class="form-top">Add Bank</label>
    <div class="form-group">
    <form action="test.php" method="POST">
    <div class="modal-body" style="text-align: left;">  
            <b>Bank Name:</b><input type="text" name="BankName" value="" 
id="" class="" /><br>
            <b>Bank Abbreviation: </b><input type="text" name="BankCode" 
value="" id="" class="" /> <br>
            <input type="SUBMIT" name="SUBMIT" value="Proceed" id="Bank" 
class="btn btn-lg btn-default" />

为了将值传递给存储过程,您需要向sqlsrv_query函数提供一个值数组。。。

$query = sqlsrv_query($conn, "EXEC sp_SRP_DuplicateData(?,?)", array( $_POST['BankName'], $_POST['BankCode'] ));

您发布的存储过程在我看来还可以,但是您启用了SET NOCOUNT,我相信它不会返回sqlsrv_num_rows函数所需的行数。您应该使用sqlsrv_has_rows函数来测试行。。。

if(sqlsrv_has_rows($query))
{
  echo "Bank Name or Bank Code already exist";
}

最新更新