1

データベースへの接続を処理し、クエリを作成する 2 つの関数を持つクラスを作成しました。これらの 1 つが、もう 1 つを呼び出します。これは私のコードですが、エラーが発生します....関数の呼び出しに何か問題があることを確認してください。誰でも私を助けることができますか?

class DB{

public function connect(){
    session_start();
    include_once('libs/Smarty.class.php');
    $smarty = new Smarty();
    $smarty->setTemplateDir('templates/');
    $smarty->setCompileDir('templates_c/');
    $smarty->setConfigDir('configs/');
    $smarty->setCacheDir('cache/');

    $host = "localhost";
    $user = "root";
    $pass = "pass";
    $tablename = "table";

    return $connect = mysql_connect($host, $user, $pass);
    mysql_select_db($tablename, $connect) or die(mysql_error());
}

public function do_query($query){
    echo DB::connect();
     if(mysql_query($query,DB::connect())){
         $message="Annuncio inserito correttamente!!";
         echo $message;
     }else{
         $message="Error insert data into DB: ";
         echo $message. mysql_error();
     }
}

}

4

4 に答える 4

2

$connect を返しますが、mysql_select_db を返したい場合があります

$connect = mysql_connect($host, $user, $pass);
return mysql_select_db($tablename, $connect) or die(mysql_error());

編集:

最後のステートメントが実行されないのは明らかな間違いだったので、「確かに何かが間違っている...」と答えていました。

ただし、接続を使用する場合は、それを返す必要があります。

$connect = mysql_connect($host, $user, $pass);
mysql_select_db($tablename, $connect) or die(mysql_error());
return $connect;
于 2013-06-22T10:40:35.683 に答える
0

まず、後に配置されたコードreturnは実行されません。これは決して使用されません:

mysql_select_db($tablename, $connect) or die(mysql_error());

したがって、データベースが選択されることはありません。

次に、1 つのクエリごとに 2 回データベースに接続していますが、http リクエスト全体では 1 回である必要があります。

次のことは、mysqllib を使用することですが、新しいという名前mysqliの . また、PDO ラッパーを試すこともできます。

于 2013-06-22T11:18:20.103 に答える
-1

DB::connect() を呼び出しています。これは静的関数であり、次のように静的として宣言する必要があります

public static function connect(){

}

クラス内で呼び出したい場合は、次のようにする必要があります

Self::connect();
于 2013-06-22T10:54:01.863 に答える