我有一个问题,我有一个存储过程插入查询和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
答案 0 :(得分:0)
您不是仅在prepare语句上检查execute语句中的错误。
(存储密码纯文本是一个很大的否定)
答案 1 :(得分:0)
这里的if语句:
sqlsrv_execute ($stmt);
if( !$stmt ) { ...
检查您的声明是否为true
。鉴于它不是空字符串或0
,总是如此。
你应该检查sqlsrv_execute
的 return 值:
if(!sqlsrv_execute ($stmt)) { ...