数据未插入表中

时间:2013-06-21 07:05:34

标签: php sql-server stored-procedures sqlsrv

我有一个问题,我有一个存储过程插入查询和PHP表单...我需要通过调用PHP中的存储过程将fname和lname保存到我的表中。当我点击按钮时没有出现任何错误,但当我查看我的表格时...没有插入数据......

PHP代码:

<?php

$serverName = " BONGBONG-PC ";  
$connection = array( "Database"=>"benefit_insurance"); 
$conn = sqlsrv_connect( $serverName, $connection); 


$btn=$_POST['button']; 
$s_fname=$_POST['fname']; 
$s_lname=$_POST['lname']; 


$stmt = sqlsrv_prepare ($conn,'CALL insert_record(@fname, @lname)', array(&$s_fname,&$s_lname)); 

 sqlsrv_execute ($stmt);

  if( !$stmt ) { 
  die( print_r( sqlsrv_errors(), true)); 
  } 

  echo "<script language=javascript>alert('ACCOUNT SAVED')</script>";


 ?>

HTML code:

<div id="login_body">
<form method="post" name="MyForm">

<p class="p3"> First Name: <input type="text" name="fname" placeholder="fname" class="aaa"/> </p>
<p class="p4"> Last Name: <input type="text" name="lname" placeholder="lname" class="aaa"/> </p>

<input type="submit" name="button" class="login" value="LOGIN"/>
</form>
</div>

SQL SERVER中的存储过程

USE [benefit_insurance]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER PROCEDURE [dbo].[insert_record] 
 @fname varchar(50) output,
 @lname varchar(50) output
AS
BEGIN
insert into trylang (fname,lname) values (@fname,@lname)


END

2 个答案:

答案 0 :(得分:0)

您不是仅在prepare语句上检查execute语句中的错误。

(存储密码纯文本是一个很大的否定)

答案 1 :(得分:0)

这里的if语句:

sqlsrv_execute ($stmt);
if( !$stmt ) { ...

检查您的声明是否为true。鉴于它不是空字符串或0,总是如此。

你应该检查sqlsrv_execute return 值:

if(!sqlsrv_execute ($stmt)) { ...