PHP连接到数据库:OOP与过程1不起作用2工作


PHP connecting to DB : OOP vs Procedural 1 dont work 2 works

我对这个问题挠了挠头:

当我将日志记录数据作为过程时,一切正常。我需要该文件一次,然后可以继续我的选择查询。但是,如果与数据库文件的连接写入为 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,那么,一旦我有权访问数据库,其余的查询将不起作用。我有时会将查询写为输出,我的意思是好像没有执行,只是纯文本:

   $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 关于最新版本。

连接

和选择数据库后遵循的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
                              ";

关于为什么的任何想法?

多谢

从你的评论中,我推测你正在混合mysql和mysqli扩展。它们是两个独立的扩展,除了它们都连接到MySQL之外没有任何共同点。如果使用 mysqli 对象连接到数据库,请使用该对象运行查询。 mysql_query将没有活动连接,因为您没有使用 mysql 函数建立连接。