我有两个完全独立的查询,这些查询已转移到过程中。当他们是临时查询时,他们跑得很好但是现在我已经存储了它们,事情变得奇怪了。
PHP调用一个类方法,该方法返回其中一个过程的值。然后调用第二种方法并失败。当我运行运行PHP无法直接从命令行给我的proc时,它给了我很好的结果。这当然很奇怪。
有人可以告诉我,如果我错过了什么吗?我很乐意发布一些代码,但为了节省时间,我想我会问,看看这是否是一个常见的问题。
这是连接的功能;
function connect()
{
$conn = mysql_connect($host, $user, $pass);
if(!$conn){
echo 'Error: cannot connect';
}else{
$selectDB();
}
}
这是失败的过程:
BEGIN
SELECT name FROM source ORDER BY name ASC;
END
这是第一个返回结果的过程。
BEGIN
SELECT cpw, cpw_id FROM cpw ORDER BY cpw ASC;
END
答案 0 :(得分:0)
没有第一次看到代码,很难说。我可以向你保证,这不是正常行为。根据您对OP的评论,您的用户凭据似乎在第一次查询后失败。我会检查以确保没有任何东西覆盖它们,或者在请求之间以任何方式修改它们。
此时,查看建立连接的代码片段并调用procs会很有帮助。
答案 1 :(得分:0)
查看代码将允许更具体的帮助,但您是否已经检查过可能覆盖连接凭据的过程中的变量名称冲突?
答案 2 :(得分:0)
如果您发布的function connect()
是真实代码(而不是SO的缩写版),则您遇到PHP's variable scope(和生命周期)的“问题”。 $ host,$ user和$ pass在函数中是未知的。即执行有效mysql_connect(null, null, null);
并且php-mysql扩展尝试建立与ini参数mysql.default_host
,mysql.default_user
和mysql.default_password
相对应的默认连接。
如果您将错误报告设置为E_ALL(例如,在函数调用之前通过error_reporting(E_ALL)
),您应该获得一些“未定义的变量”消息。