2012-12-16 91 views
0

首先我很抱歉,如果我的英文不完美,英文不是我的母語。我會盡我所能讓自己明白。爲什麼不是mysqli在不同的php文件中工作

我試圖創建所有必要的步驟來連接和使用mysqli查詢數據庫。這些將保留在一個單獨的php文件中,必要時將包含這些文件。我這樣做只是爲了不必總是編寫代碼連接到數據庫。

在我dbConnection.php文件我有:

<?php 
require("login.php"); 

$connection; 
function connect() { 
    global $connection; 

    $connection = new mysqli($host, $username, $password, $database); 

    if ($connection->connect_errno) { 
     printf("Connection failed: %s\n", $connection->connect_error); 
     exit(); 
    } 
} 

function mysqlQuery($query) { 
    global $connection; 

    if($connection == NULL) connect(); 

    $result = $connection->query($query); 
    if (!$result) { 
     printf("Query failed: %s\n", $connection->error); 
     exit(); 
    } 

    return $result; 
} 

?> 

(login.php中有用於連接的變量)

當我需要連接到一個數據庫我使用要求(「dbConnection.php 「);

問題是當我調用mysqlQuery函數時,它總是打印「查詢失敗:沒有選擇數據庫」。我很確定數據庫名稱是正確的。

當我直接在腳本中使用代碼(不是在單獨的文件中),它工作正常。

在此先感謝。

問題已解決,忘記聲明爲全局$ host,$ username,$ password,$ database。

+2

你的意思是$ connection-> error而不是$ mysqli->錯誤,對不對? –

+0

是的,我很抱歉。錯誤的複製粘貼。打印的錯誤是:沒有選擇數據庫 – Solidus

回答

1

主要有兩個原因,一個代碼出錯:

  1. 錯誤的想法或算法或結構
  2. 錯誤這種想法或算法或結構

沒有經驗的實施程序員總是堅持第一個,很少關注第二個(所以你問 - 「如何使用...?」)。而在現實生活中,第二個更重要。算法很少,但錯誤無數。必須學會如何發現錯誤。儘管我在這樣的結構中看不到任何一點,(mysqlQuery函數幾乎沒用,並且可以用$result = $connection->query($query) or trigger_error($connection->error."[$query]");代碼行代替,這將更好地代替方式),但乍一看它應該起作用。
因此,我們不得不專注於「如何去做?」問題,但關於「爲什麼它不工作?」。

對後一問題的回答稱爲調試。你必須學習它,並在日常工作中大量使用。在實踐中,這意味着如果代碼中包含所需的值,則必須檢查代碼中的每個變量。

查看由PHP生成的所有錯誤對調試也很重要。
在你的代碼中總是有error_reporting(E_ALL);指令(在全局配置文件中可以)。

而且也,在開發系統上添加ini_set('display_errors',1);到您的配置文件(但值更改爲0生產!)

我敢打賭,這兩項指令將闡明這個問題的一些情況。
如果不是 - 繼續調試。

+2

歡迎回來:) –

+0

你好。是的,這個功能實際上是無用的,因爲它現在就是它的開始。目標是添加更多的東西,我只是測試一個簡單的連接並查詢數據庫。如果問題沒有做好,我很抱歉,我猜「爲什麼」是更好的方式。我是新來的PHP,我不知道如何打印沒有打印(這並沒有給我太多),因爲我沒有找到答案,但我應該問。如果我以某種方式冒犯,我很抱歉:/感謝您的提示。 – Solidus

相關問題