PHP:mysqli_fetch_assoc不适用于存储过程

时间:2010-03-03 23:56:40

标签: php mysql stored-procedures mysqli

我在MySQL数据库中有一个'帐号'(id,email,pass)。

我有存储过程

DELIMITER $$
CREATE PROCEDURE `LoadAccount`(email_p VARCHAR(100))
BEGIN
    SELECT pass FROM account WHERE email = email_p;
END$$
DELIMITER ;

这是代码

function loadAccount($email, $pass)
{
  // connect to DB
  // ...
  $query = "CALL LoadAccount('{$email}')";

  if ($mysqli->multi_query($query))
  {
    do
    {
      if ($result = $mysqli->store_result())
      {
        // Numbered array.
        while ($row = $result->fetch_array(MYSQLI_NUM))
        {
          printf("%s %s\n", $row[0]);
        }

        // Associative array.
//        while ($row = $result->fetch_array(MYSQLI_ASSOC))
//        {
//          printf("%s\n", $row['pass']);
//        }
        $result->free();
      }
      $mysqli->more_results();
    } while ($mysqli->next_result());
  }
}

因此,编号数组部分可以工作,但如果我将其注释掉并取消注释关联数组部分 - 该页面只会挂起并失去连接。

为什么不起作用?

2 个答案:

答案 0 :(得分:1)

不确定输入错误是否在您的代码中,但是:

printf("%s\n", $row[pass]);

应该是:

printf("%s\n", $row['pass']);

答案 1 :(得分:0)

好吧,对于像重新安装PHP这样奇怪的事情有帮助!至少这次是这样做的。