我试图在SQL Server 2008中对表进行插入,但是我得到一个查询失败,根本没有错误。
这是我的存储过程:
USE [ACREDITA]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[VICOM_INS_IMPACTO]
@IMPC_NOMBRE varchar(100),
@IMPC_OTRO varchar(100)
AS
BEGIN
DECLARE @TranName VARCHAR(200) = 'TRANSACTION'
BEGIN TRANSACTION @TranName
BEGIN TRY
---------------------------------------------------------
IF(@IMPC_NOMBRE = 'otro')
BEGIN
INSERT INTO
VICOM_IMPACTO_MAESTRA(VICOM_IMPACTO_NOM,VICOM_IMPACTO_OTRA)
VALUES
(@IMPC_NOMBRE,@IMPC_OTRO)
END
ELSE
BEGIN
DECLARE @OTRO varchar(100) = NULL
INSERT INTO
VICOM_IMPACTO_MAESTRA(VICOM_IMPACTO_NOM,VICOM_IMPACTO_OTRA)
VALUES
(@IMPC_NOMBRE,@OTRO)
END
SELECT SCOPE_IDENTITY()
COMMIT TRANSACTION @TranName
--------------------------------------------------------
END TRY
BEGIN CATCH
--------------------------------------------------------
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION @TranName
--------------------------------------------------------
EXEC ('ACREDITA_GuardarError')
END CATCH
SELECT ERROR_MESSAGE()
END
我试图通过帖子发送的输入如下:
<form action="Backend/grabar_ficha.php" id="ficha_vicom" method="post" name="ficha_vicom" enctype="multipart/form-data">
<fieldset>
<legend>Impacto en la formación de los estudiantes:</legend>
<select class="form-control input" name="impacto" onchange="impactoOtro(this);" required >
<option value="">Seleccione...</option>
<option value="Formación académica">Formación académica</option>
<option value="Actualización de contenidos">Actualización de contenidos</option>
<option value="Desarrollo práctico y experiencial">Desarrollo práctico y experiencial</option>
<option value="otro">Otro</option>
</select><br>
<input type="text" name="impactoO" value="sin info" class="form-control impactoOtro" onkeyup="textCounter(this,'counterImp',100);" maxlength="100" placeholder="especifique" style="display: none;" required />
<input value="Caracteres restantes 100" disabled class="counter" id="counterImp" size="25" style="display: none;">
</fieldset><br>
</form>
我以这种方式得到“impacto”和“impactoO”字段的值......
//Variables impacto actividad
$impactoO = $_POST['impactoO'];
$impacto = $_POST['impacto'];
然后调用一个调用SP的php函数
$id_impacto = $db->VICOM_INS_IMPACTO($impacto, $impactoO);
PHP函数如下:
function VICOM_INS_IMPACTO($name,$otro){
if($name != "otro"){
$otro = "null";
}
$this->query = "execute VICOM_INS_IMPACTO
@IMPC_NOMBRE = '".utf8_encode($name)."',
@IMPC_OTRO = '".utf8_encode($otro)."'";
$res_ = $this->DB_Insert();
return $res_;
}
所有其他以类似方式工作的功能都可以正常工作,但出于某种原因,这个功能并不适用。
我无法使用mssql_last_message而且我没有收到任何特定的错误消息。
error_reporting(E_ALL | E_STRICT);
ini_set("display_errors", 1);
你们认为可能会发生什么?
非常感谢你的帮助。
修改:
这些是我得到的错误:
Warning: mssql_query() [function.mssql-query]: Query failed in /web/sites/umayor/acreditacion/AMBTE_PRD_V2/ficha_vicom/Backend/Database.php on line 71
Warning: mssql_fetch_assoc() expects parameter 1 to be resource, boolean given in /web/sites/umayor/acreditacion/AMBTE_PRD_V2/ficha_vicom/Backend/Database.php on line 77
我还打印了我发送的查询,这是我得到的:
SQL statement failed with error QUERY = execute VICOM_INS_IMPACTO @IMPC_NOMBRE = 'Formación académica', @IMPC_OTRO = 'null'