2016-02-16 48 views
0

第一次使用mysqli并与准备好的语句挣扎。 这是一个数据库的问题,还是一个的问题?成功的mysql连接但没有选择数据库?

这可通过使用自动配置的笨框架... 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; 
     } 
+0

如何在没有主机,用户或密码的情况下连接成功?这是一个*连接*问题。 –

+0

'$ con = mysqli_connect()'如果这是你真正的代码,这里很明显。 RTM http://php.net/manual/en/function.mysqli-connect.php –

+0

但这些都在我的自动配置文件中提供....?!?! .../application/config/database.php对不起,我应该提到我正在使用CodeIgniter框架 – Maxcot

回答

1

你并不需要创建单独的数据库配置,如果你只需要在同一连接上使用不同的数据库。当你需要,你可以切换到不同的数据库,这样的:

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

重要的是要注意,有几层建立数据库连接时要考虑的很重要的。首先你需要连接到服务器,然后连接到你选择的数据库。一旦完成,那么你可以运行你的查询。

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

这不是太奇怪了mysqli_connect方法池莉构建之后,因为你从来没有真正问它做任何事情就没有mysqli的错误。

+0

......你从未真正要求它做任何事情......我认为这是关键。 – Maxcot

0

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

  • 弗雷德-II指出,“CI使用不同的方法准备语句” 回想起来,我不知道我怎么忘记了这一点。所有突然之间,我都在CodeIgniter框架之外挣扎着mysqli语句,并且咆哮着错误的树。 OffTheBricks指出:“在构建mysqli_connect方法之后不会出现mysqli错误并不令人感到意外,因为您从未真正要求它执行任何操作。”

很显然,我的自动配置是正确的,而且错误检查说一切都很好,我的数据库连接,只是因为我是混合两种不同的技术假设:CodeIgniter的自动配置文件,以及标准的mysqli 。

感谢您的帮助...现在感觉像是一个白痴。