2016-02-16 84 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 。

感謝您的幫助...現在感覺像是一個白癡。