Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 警告:mssql_execute():提供的参数不是有效的MS SQL语句资源_Php - Fatal编程技术网

Php 警告:mssql_execute():提供的参数不是有效的MS SQL语句资源

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']."

我尝试用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']."',  
                  @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警告设置为打开状态”);