在服务器移动后,在非对象上调用成员函数prepare()

时间:2014-10-02 20:20:17

标签: php pdo

我很难过,我改变了主机,现在我正在接受#34;在非对象上调用成员函数prepare()"在旧服务器上已经工作了几个月的脚本上。我在这里读过并尝试了一些我发现的东西,但似乎没有什么能让它再次发挥作用。

我是新手,所以请慢慢清楚地说。 ;)

$dbh = connect_db(); 

    $sql = 'SELECT count(*) FROM ppipn WHERE txn_id = :txn_id';
    $result = $dbh->prepare($sql); 
    $result->execute(array(':txn_id' => $txn_id)); 
    $number_of_rows = $result->fetchColumn(); 

    if ($number_of_rows>0){
    die();
    }

功能:

function connect_db()
{
    $DbHost = 'localhost';
    $DbName = '***n';
    $DbUser = '***';
    $DbPass = '***';
    $table;

    try
    {
        $connection = new PDO('mysql:host='.$DbHost.';dbname='.$DbName, $DbUser, $DbPass);
        $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $connection->setAttribute(PDO::ATTR_PERSISTENT, true);
    }
    catch (PDOException $e)
    {
        // Proccess error
        echo 'Cannot connect to database: ' . $e->getMessage();
    }

    return $connection;
}

2 个答案:

答案 0 :(得分:4)

此错误表示$ dbh-> prepare()行中的$ dbh不是对象。

你的connect_db()函数可以返回一个构建的PDO对象,或者回显“无法连接”并返回一个名为$ connection的变量,该变量是空的。

您的connect_db()函数几乎肯定无法连接,并且您没有看到错误回显。

答案 1 :(得分:3)

  

"它可能是register_globals问题??????虽然我现在倾向于服务器问题。如果有人有任何想法可能是服务器问题,我很乐意听到它。主持人是Bluehost。" - user3154948

根据Bluehost的文档https://my.bluehost.com/cgi/help/89
Host name = (use the server IP address)您现在正在使用localhost

您以前的主机数据库设置可能要求您使用localhost,但Bluehost的设置似乎不是这里的情况。这是从服务器更改为服务器/托管服务的正常现象。


以下内容来自他们的网站:https://my.bluehost.com/cgi/help/89

Configuration Settings:

Use the following configuration settings for connecting to your database

Host name = (use the server IP address)
Database name = (cpanelUsername_databaseName)
Database username = (cpanelUsername_databaseUsername)
Database password = (the password you entered for that database user)
MySQL Connection Port = 3306
TCP or UDP, either is fine.

因此,请将localhost更改为他们为您指定的IP地址。查看您的电子邮件,了解在注册时发送给您的任何详细信息,或contact Bluehost以了解您应该使用的IP地址设置。

$DbHost = 'localhost'; // change this

另请参阅:https://my.bluehost.com/cgi/help/2167