【问题标题】:Data not inserted into table数据未插入表中
【发布时间】:2013-06-21 07:05:33
【问题描述】:

我有一个问题,我有一个存储过程插入查询和一个 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 代码:

<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

【问题讨论】:

  • 技术信息属于标签,而不是你的问题标题。我已尽最大努力重新命名,但您可能需要进一步改进。

标签: php sql-server stored-procedures sqlsrv


【解决方案1】:

您不是在执行语句上检查错误,而是在准备语句上检查错误。

(并且存储密码纯文本是一个很大的不,不)

【讨论】:

  • 你能告诉我怎么做吗...我已经弄清楚了 4 天
  • 我已经检查了错误,但我的数据库中仍然没有保存数据
【解决方案2】:

这里的if语句:

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

检查您的语句是否为true。鉴于它不是空字符串或0,那将永远如此。

你应该检查来自sqlsrv_execute返回值:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多