php在非对象问题上调用成员函数prepare()


php Call to a member function prepare() on a non-object problem

<?php
    $dbtype = 'mysql';
    $mysql_host = "localhost";
    $mysql_database = "mydb";
    $mysql_user = "root";
    $mysql_password = "";
    try {
        $db = new PDO ( $dbtype . ':host=' . $mysql_host . ';dbname=' . $mysql_database,         $mysql_user, $mysql_password, array (PDO::ATTR_PERSISTENT => true ) );
        return $db;
    } catch ( PDOException $e ) {
        return false;
    }
?>

以上是我的db.php

<?php
   require db.php";
   ...
   global $db;
   $stmt = $db->prepare ( "INSERT INTO quote (title, contactname) VALUES (:a, :b);" );

事实上,我可以在我的IDE(ZendStudo-wamp服务器(下正确运行它,但一旦我上传到主机服务器,我就收到了这个错误。任何以前遇到同样问题的人都可以指导我如何解决?

原因有很多,但有一个明显的原因是您有一个PDOException,然后是$db == false,这将解释错误消息。

尝试检查$db是否正确设置为PDOfalse

PDO不会抛出异常,除非您明确指示它这样做:

$db = new PDO(...);
$db ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);