【问题标题】:PHP SQL Server, call a stored procedures with parametersPHP SQL Server,调用带参数的存储过程
【发布时间】:2012-06-18 15:15:45
【问题描述】:

我正面临下一个问题:

我做了一个存储过程如下:

CREATE PROCEDURE verify_user_connection
@username nvarchar(50),
@pass nvarchar(50)
AS

BEGIN

SELECT users.username, users.pass 
FROM dbo.users
WHERE users.username = '@username'
AND users.pass = '@pass'

RETURN '@username'

END

在 PHP 代码中我这样称呼他:

  <?php
  /* Handle form buttons. */
  if (isset($_POST['login'])) {
    if (!empty($_POST['username']) || !empty($_POST['pass'])) {
      $username = $_POST['username'];
      $password = $_POST['pass'];
      $sql = "{ CALL dbo.verify_user_connection (@username = ?, @pass = ?) }";
      $param = array($username, $password);
      $result = sqlsrv_query($conn, $sql, $param);
      $row = sqlsrv_fetch_object($result);
      echo $row;
      if (!$row) {
        die(print_r(sqlsrv_errors()));
      }
      else {
        echo "record found";
      }
    }
    else {
      echo "something went wrong";
    }
  }
  ?>

好吧,我在微软的 SQLSRV 驱动程序中有点新,我知道我的语法在这里不准确 有人可以指出我的问题并向我解释我做错了什么吗?

提前致谢

【问题讨论】:

  • 我根本不懂php,但是在你的sp上你应该删除你的变量的':users.username = @username AND users.pass = @pass RETURN @username

标签: php sql-server sql-server-2008 stored-procedures


【解决方案1】:

这不会有太大帮助,但我发现使用 SQL Server 和 SP 最可靠的方法是使用 PHP ADODB (http://adodb.sourceforge.net/#download) 连接和调用 procs。

在使用 SQL Server 时,我总是发现内置的 sql server 函数充其量是不完整的。

如果您仍在苦苦挣扎,我很乐意通过电子邮件为您提供更多信息。

【讨论】:

  • 感谢您的回答,但我会尽量避免使用外部插件进行简单操作,我相信微软在制作驱动程序时已经考虑过 SP,
  • 不是驱动而是php函数。好的...我已经使用 SQL Server 和 PHP 多年,这是唯一可靠的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
相关资源
最近更新 更多