-4

私は実際に PDO を使い始めました。PDO に関する多くの質問を見てきましたが、それらの質問を読んでも問題を解決できません。

と呼ばれる PDO Config File というファイルが 1 つありますがdb.php、このファイルには問題はありません。

db.php 

<?php 
######## PDO Config File ##########
        $mysql_hostname = "localhost";
        $mysql_user = "web";
        $mysql_password = "123123";
        $mysql_database = "123123";
        //$odb = new PDO ("mysql:host=".$mysql_hostname.";dbname=".$mysql_database;charset:UTF-8",$mysql_user,$mysql_password);
        try{
                $connect = new PDO("mysql:host=".$mysql_hostname.";dbname=".$mysql_database.";charset:UTF-8", $mysql_user, $mysql_password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
        }
        catch(PDOException $pe){
            die('Could connect to the database because: ' .$pe->getMessage());
        }
 ?>

このファイルを次の PHP ファイル [setting.php] にインクルードしました。

setting.php

class Account
{
    public function userEmailChnage($inputCurrentEmail,$inputChangeEmail,$inputConfirmEmail)
    {
        if(!empty($inputCurrentEmail) AND !empty($inputChangeEmail) AND !empty($inputConfirmEmail)){
            $selectEmail        = "select mail from users where mail = ?";
            $selectEmailPrepare = $connect -> prepare($selectEmail);
            $selectEmailPrepare -> execute(array($inputConfirmEmail));

        if ($selectEmailPrepare ->rowCoun() > 0 ) {     
                if($inputChangeEmail == $inputConfirmEmail) {
                        $EmailUpdate = "UPDATE users SET mail= ?";
                        $EmailUpdatePrepare = $connect->prepare($EmailUpdate);
                        $EmailUpdatePrepare -> execute(array($inputChangeEmail));
                        $msg[EmailUpdateOpration]=Success;

                }else{
                        $msg[IsConfirmMailMatching]=FALSE; //---------------- > JSON ERROR Msg 
                }
            }else{
                    $msg[IsEmailInDatabase]=FALSE; //---------------- > JSON ERROR Msg 
            }
        }else{
            $msg[IsEmailFieldEmpty]=TRUE; //---------------- > JSON ERROR Msg 
        }   
        header("Content-Type: application/json", true); 
        echo json_encode($msg); 
    }

}

ファイルの実行後、次のエラーに直面しています:

Fatal error: Call to a member function prepare() on a non-object in /home/admin/public_html/class/setting.php on line 12

PDO 構成ファイルを変更しようとしましたが、うまくいきませんでした。私はsetting.phpのテストを開始しました..それを解決することができません!

4

3 に答える 3

2

この行で:

$EmailUpdatePrepare = $connect->prepare($EmailUpdate);

...次のエラーが表示されます。

非オブジェクトでメンバー関数 prepare() を呼び出す

つまり、オブジェクト$connectではありません。グローバル変数のように見えるので、そのように処理する必要があります:global $connect;使用する前に呼び出すか、 $GLOBALS['connect']. (または、さらに良いのは、メソッドへの引数として渡すことです。)

于 2012-12-19T09:23:12.530 に答える
0

$connectPDOの対象ではないようです。おそらくNULLまたはfalse値です。おそらく、接続がサイレントに失敗しました。スローされた PDOException をチェックしてみてください。

try {
    // pdo connection
} catch (PDOException $e) {
    exit($e->getMessage());
}

PDO::__construct()は成功した場合にのみオブジェクトを返し、それ以外の場合は例外をスローすることに注意してください。

于 2012-12-19T09:20:33.837 に答える
0

userEmailChnage() メソッドに db.php を含める/要求する必要があります。

于 2012-12-19T09:20:59.250 に答える