mysql程序和PHP数据库连接的奇怪问题

时间:2010-01-05 16:48:10

标签: php mysql

我有两个完全独立的查询,这些查询已转移到过程中。当他们是临时查询时,他们跑得很好但是现在我已经存储了它们,事情变得奇怪了。

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

3 个答案:

答案 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_hostmysql.default_usermysql.default_password相对应的默认连接。

如果您将错误报告设置为E_ALL(例如,在函数调用之前通过error_reporting(E_ALL)),您应该获得一些“未定义的变量”消息。