Php 警告:mssql_execute():提供的参数不是有效的MS SQL语句资源
我尝试用php运行一个存储过程。但无论如何,这总是会在屏幕上显示以下错误消息: “警告:mssql_execute():提供的参数不是有效的MS SQL语句资源…” 请在下面查找我在php中调用存储过程的代码:Php 警告:mssql_execute():提供的参数不是有效的MS SQL语句资源,php,Php,我尝试用php运行一个存储过程。但无论如何,这总是会在屏幕上显示以下错误消息: “警告:mssql_execute():提供的参数不是有效的MS SQL语句资源…” 请在下面查找我在php中调用存储过程的代码: $conn = mssql_connect("sql-02", "rsGreen", "abc123"); $db = mssql_select_db("Green"); $Query = "exec rpt_control @list = '".$_REQUEST['list']."
$conn = mssql_connect("sql-02", "rsGreen", "abc123");
$db = mssql_select_db("Green");
$Query = "exec rpt_control @list = '".$_REQUEST['list']."',
@suburb = '".$_REQUEST['suburb']."',
@state = '".$_REQUEST['state']."',
@on_off = ".$_REQUEST['switch'];
mssql_execute($Query );
有人知道我的代码出了什么问题吗
注意:当我手动运行存储过程时,它工作正常且无错误显示mssql\u execute()
执行一条准备好的语句,而不是包含SQL语句的字符串(这是mssql\u query()
的函数)。您需要准备一条语句,将参数绑定到其中,然后执行它:
// Prepare it with mssql_init()
$qry = mssql_init("rpt_control", $conn);
if ($qry) {
// We assume these fields are all VARCHAR types...
// If not, see the type constants listed on the mssql_bind() docs...
mssql_bind($qry, '@list', $_REQUEST['list'], SQLVARCHAR);
mssql_bind($qry, '@suburb', $_REQUEST['suburb'], SQLVARCHAR);
mssql_bind($qry, '@state', $_REQUEST['state'], SQLVARCHAR);
mssql_bind($qry, '@switch', $_REQUEST['switch'], SQLVARCHAR);
// Then execute it
mssql_execute($qry);
// And free it
mssql_free_statement($qry);
}
尽管可以通过构建SQL字符串并将其发送到
mssql_query()来执行存储过程
,如果可以使用预先准备好的语句,则不建议这样做。我认为您应该使用sqlsrv
函数,而不是mssql
,但在这里提问之前,您应该参考,因为它可能会帮助您找到问题的根源。mssql\u execute()
需要一个资源,而不是字符串查询。您可能需要创建一个存储过程来调用mssql_init()
,或者在您的情况下,您可能可以使用mssql_query()
我尝试了这一点。。但是错误消息“警告:mssql_execute()[function.mssql execute]:消息:异类查询要求为连接设置ANSI_NULLS和ANSI_WARNINGS选项。这可确保查询语义一致。请启用这些选项,然后重新发出查询“dispay@JinYong因此,请使用mssql\u查询(“将ANSI\u空值设置为打开状态;将ANSI\u警告设置为打开状态”);