2

我正在为此撕毁我的头发,所以我去了这个网站。

我有一个 PHP 脚本。它试图访问脚本所在服务器上的 MySQL 数据库,使用非常常见的 mysql_connect(建立持久连接)并将结果分配给变量 $user_con。

$user_con = mysql_connect([servername], [username], [password], TRUE);
//And no, that's not what's actually in the code, but I'm not going to give those
details up. :)

但由于某种原因,所有试图从中获取数据的尝试都失败了……没有任何错误。mysql_error(),无论是在连接尝试之后还是在使用 mysql_select_db() 之后,都不输出任何内容。if 语句将 $user_con 视为非空(如果 mysql_connect 失败,则输出 FALSE,使用 empty() 将其视为空),尽管回显 $user_con 不输出任何内容。脚本本身不会崩溃,并且会输出 HTML 的其余部分和来自其他 SQL 连接的数据,我做得很好。

出于某种原因,脚本只注意到连接在稍后执行时无法正常工作。当我尝试获取数据时,我让它检查连接是否存在,它最终表现得好像它没有它,所以我让它尝试重新连接并且失败,如下一个 if 块所示如果它无法从数据库中获取数据,我会在哪里输出不同的数据。

if(empty($user_con))
{
     $check = mysql_ping($user_con);
     if(!$check)
     {
           $user_con = mysql_connect([servername], [username], [password], TRUE);
           if(!empty($user_con))
           {
               mysql_select_db("user_db", $user_con); 
           }
     }
 }

 if(empty($user_con))
 {
     $output .= "<br /><span class=\"comuser\">Posted by: User #" . $userid . "</span></p>";
     //Where $userid is outputted instead of the username I want to get from the database USING the userid
 }

我还想指出,在此代码中的任何位置回显 mysql_error() 调用也不会输出任何内容,因为这显然太容易了。

在现在的页面上,可以看到这里,除了脚本只输出用户 ID 而不是用户名之外,一切正常。

我只是想不通为什么我不能让这个连接工作......即使使用我老板编写的代码来纠正其他脚本中的这个问题在这里也不起作用(事实上,实际上会导致一个很好的崩溃反而)!

4

1 回答 1

0

mysql_error() 在运行查询时从服务器返回实际错误。你没有走那么远。

在这种情况下,您的 PHP 错误似乎没有显示,因此您没有看到连接错误。检查你的 php.ini 和你的 error.log。

另外,请使用 PDO 或至少使用 mysqli,并正确处理异常。

于 2013-05-05T00:19:26.007 回答