【问题标题】:Call a SQL Server stored proc with parameters in PHP在 PHP 中使用参数调用 SQL Server 存储过程
【发布时间】:2017-07-04 15:10:43
【问题描述】:

基于此:

how to execute sql server stored procedure on php?

尝试了以下方法:

$odbc = odbc_connect($DB1_ODBC,$DB1_USER,$DB1_PWD);  // proven to be fully functionnal
$result = odbc_exec($odbc,"CALL importClient( @name = 'hello',@number = 457)"); 

它不调用存储过程,我看不到任何错误代码。

我将"CALL 替换为"EXEC,但在这两种情况下都不起作用。

否则,可以使用相同的凭据连接到数据库并使用以下 SQL 语句来运行存储过程:

EXECUTE [dbo].[importClient] @name = 'hello',@number = 457

我找不到任何有用的东西,也没有想到其他方法,我肯定需要这些参数。

【问题讨论】:

    标签: php sql-server stored-procedures


    【解决方案1】:
    $stmt = odbc_prepare($odbc, "call dbo.importClient(?, ?)");
    odbc_execute($stmt, ["hello", 457]);
    

    使用准备好的语句将保护您的代码免受 SQL 注入攻击。当您将文字值替换为包含用户输入的变量时,请使用此选项。

    【讨论】:

    • 错误码如下:odbc_execute(): SQL error: [Microsoft][ODBC SQL Server Driver]Invalid parameter number
    【解决方案2】:

    终于成功了:

    $result = odbc_exec($odbc,"EXECUTE importClient @name = 'hello', @number = 457");
    

    但这并不能防止 SQL 注入,因此它可能不是最佳答案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多