【发布时间】:2011-01-23 11:24:30
【问题描述】:
我在 MySQL 数据库中有一个表“帐户”(ID、电子邮件、密码)。
我有存储过程:
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());
}
}
所以,编号数组部分有效,但如果我将其注释掉并取消注释关联数组部分 - 页面就会挂起并失去连接。
为什么它不起作用?
【问题讨论】:
-
您感到困惑是对的,因为这是应该工作的代码。您能否查看 mysql 服务器日志以及慢查询日志(如果已启用)并查看显示的内容
-
服务器日志显示错误:错误应用程序名称:httpd.exe,版本:2.2.14.0,时间戳:0x4ad08a08 错误模块名称:php_mysqli.dll,版本:5.2.5.5,时间戳:0x47389d89 异常代码:0xc0000005 错误偏移量:0x0000000000002474 错误进程 id:0x1014 错误应用程序启动时间:0x01cabb38919dc683 错误应用程序路径:C:\apache64\bin\httpd.exe 错误模块路径:C:\php\ext\php_mysqli.dll 报告 ID:64124eed -2731-11df-9c2d-002564f16a19 如何启用查询日志?
标签: php mysql stored-procedures mysqli