0

私はこの問題で頭を悩ませています:

ロギング データをプロシージャルにすると、すべて正常に動作します。ファイルを一度要求すると、選択クエリを続行できます。ただし、DB ファイルへの接続が OOP として記述されている場合。データベースが選択されていないというエラーが表示されます

====

<?php

        // SETTING VALUES AS CONSTANTS

        DEFINE('DB_USER', 'root');
        DEFINE('DB_PASSWORD', '');
        DEFINE('DB_HOST', 'localhost');
        DEFINE('DB_NAME', 'tra');

        // CONNECTING JUST TO THE SERVER
        $dbc = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

        if (!$dbc)  // IF IT CAN'T CONNECT, ISSUE A MESSAGE
             {
                die('Could not connect: ' . mysql_error());
        }

        // CONNECTING NOW TO THE DB
        mysql_select_db("tra", $dbc);

    ?>

そのため、そこまでは正常に機能します。私は別のファイルにそれを持っています(ルートパスから)

しかし、OOP を実行しようとすると、DB にアクセスできるようになると機能する残りのクエリが機能しなくなります。出力としてクエリが書き込まれることがあります。つまり、実行されていないかのように、プレーンテキストだけです。

   $mysqli = new mysqli("localhost", "root", "");
            $mysqli->select_db("tra");

私はOOPバージョンでたくさんの種類を試しましたが、最初は次のように個別にインスタンス化しました

$mysqli = new mysli();
$mysqli->connect("127.0.0.1", "root", "", "tra");

またはまた

$mysqli = new mysqli("localhost", "root", "");
$mysqli-> select_db("tra");

しかし、OOP を試してもうまくいきません。つまり、私は膝の上に本を持っているので、それを随時書いています。問題は別の場所にあるはずです。

PHPのバージョンは最新のもので5.3.8です。

DB の接続と選択の後に続く sql クエリ (接続ファイルが手続き型の場合に機能します) は次のとおりです。

$sql ="SELECT FName
                              FROM work_assignment, developer
                              WHERE developer.country = '".$country."'
                              AND work_assignment.from_language = '".$from."'
                              AND work_assignment.into_language = '".$into."'
                              AND work_assignment.developer_id = developer.developer_id

                              ";

理由についてのアイデアはありますか?

どうもありがとう

4

1 に答える 1

1

あなたのコメントから、mysql と mysqli 拡張機能を混在させていると思います。これらは 2 つの別個の拡張機能であり、どちらも MySQL に接続することを除いて、共通点はありません。mysqli オブジェクトを使用してデータベースに接続している場合は、そのオブジェクトを使用してクエリを実行します。mysql_querymysql 関数を使用して接続を確立していないため、アクティブな接続はありません。

于 2012-05-25T08:42:33.110 に答える