2013-05-29 105 views
0

我感覺我多年來第一次使用php。我試圖執行一個簡單的選擇語句。我已經確認該語句直接針對mysql。我的PHP沒有完成。我想知道爲什麼我的real_query不工作,我也想知道如何哄騙出這種情況的錯誤信息。這裏是代碼:爲什麼我沒有看到錯誤信息?

function getRoot($nid) 
{ 
    echo $nid; //displays 0 
    try 
    { 
     echo "Hello?"; //This displays 

     //Why doesn't this work?! 
     if($mysqli->real_query("SELECT * FROM gem, bundles WHERE gem.nid = bundles.baseNid AND bundles.nid = " . $nid)) 
     { 
      echo "dafuq?"; //does not display 
     } 
     else 
     { 
      echo "foo"; //doesn't display 
      echo $mysqli->error; //doesn't display 
     } 
    } 
    catch (Exception $e) 
    { 
     echo "Tralalalala"; //doesn't display 
    } 
    echo "teeheehee"; //doesn't display 
} 

感謝您的幫助!

+1

您是否在php.ini中啓用了「error_reporting」和「display_errors」? (假設它是一個開發機器,將error_reporting設置爲E_ALL | E_STRICT並將display_errors設置爲On)。 – Maerlyn

+0

定義'$ mysqli'在哪裏? –

+0

顯然,要麼它不正確的方式,要麼你有一個眼睛視力問題..ö順便說一句,我學會了思維全球時,我開始PHP ..:D – argentum47

回答

6

函數中沒有聲明變量$mysqli,所以你的代碼產生一個FATAL ERROR - 你正在調用一個非對象的方法。如果$mysqli是一個全局變量,則必須在函數的開始處添加global $mysqli;

+0

+1但爲什麼沒有$ _mysqli !!這會讓事情變得更簡單 – argentum47

4

$mysqli未在函數中定義,並且PHP使用標準異常引發致命錯誤,即而不是

您需要啓用錯誤報告(在php.ini中將display_errors設置爲On或通過ini_set設置爲On,例如:ini_set('display_errors', '1'););

相關問題