【问题标题】:successful mysql connection but no database selected?mysql连接成功但没有选择数据库?
【发布时间】:2016-02-16 20:32:29
【问题描述】:

第一次使用 mysqli 并在准备好的语句中挣扎。 这是数据库问题,还是问题?

这是使用带有自动配置的 CodeIgniter 框架... http://www.codeigniter.com/user_guide/database/connecting.html

  1. 我正在使用 database.php 自动配置文件
  2. 我的连接是由$con = mysqli_connect() or die('Error in Connecting: ' . mysqli_error($con)); 建立的,似乎是成功的。
  3. 我准备好的声明是$stmt = mysqli_prepare($con, "INSERT INTO table(documentID) VALUES (?)");
  4. 然后当我检查准备好的语句时,我得到一个错误1046 No database selected但我的代码只是告诉数据库选择/连接很好。

下面我的模型中的概览:

$con = mysqli_connect() or die('Error in Connecting: ' . mysqli_error($con));

if (!$con) {
        echo "Error: Unable to connect to MySQL." . PHP_EOL;
        echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
        echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
        echo "<b>";
        exit;
    }
    else
    {
        echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
        echo "Host information: " . mysqli_get_host_info($con) . PHP_EOL;

//Success: A proper connection to MySQL was made! 

$stmt = mysqli_prepare($con, "INSERT INTO table(documentID) VALUES (?)");
if (!$stmt) {
        echo "Problem <b>";
        $error = $con->errno . ' ' . $con->error;
            echo $error; // 1046 No database selected
            exit;
        }

【问题讨论】:

标签: php mysql codeigniter mysqli


【解决方案1】:

如果您只需要在同一连接上使用不同的数据库,则无需创建单独的数据库配置。您可以在需要时切换到不同的数据库,如下所示:

$this->db->db_select($database2_name);

【讨论】:

    【解决方案2】:

    请务必注意,在建立数据库连接时需要考虑多个层。首先,您需要连接到服务器,然后连接到您选择的数据库。完成后,您就可以运行查询了。

    查看 mysqli_connect() 的 PHP 手册条目
    http://php.net/manual/en/function.mysqli-connect.php

    在构造 mysqli_connect 方法后不会出现 mysqli 错误,这并不奇怪,因为您实际上从未要求它执行任何操作。

    【讨论】:

    • ……你从来没有真正要求它做任何事情……我认为这是关键。
    【解决方案3】:

    为了让下一个可能遇到此问题的人更容易阅读......有几个片段回答了我的问题。

    • Fred-ii 指出“CI 使用不同的方法作为准备好的语句” 回想起来,我不知道我是怎么忘记的。突然之间,我在 CodeIgniter 框架之外苦苦挣扎 mysqli 语句,并叫错了树。

    • OffTheBricks 指出“在构造 mysqli_connect 方法后不会出现 mysqli 错误,这并不奇怪,因为您实际上从未要求它执行任何操作。”

    显然,假设我的自动配置是正确的,并且错误检查表明我的数据库连接一切正常,仅仅是因为我混合了两种不同的技术:CodeIgniter 自动配置文件和标准 mysqli。

    感谢您的帮助...现在感觉自己像个白痴。

    【讨论】:

      猜你喜欢
      • 2016-07-16
      • 2019-07-26
      • 2015-07-17
      • 2016-02-22
      • 2014-08-11
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多