2011-01-10 79 views
0

我嘗試連接到my_sql數據庫時出現問題。我對PHP很陌生,所以這可能是一個非常簡單的問題。在我的index.php頂部我有以下代碼:php my_sql連接問題

try 
    { 
     echo 'here 1'; 
     $db=mysql_connect('localhost', 'root', 'password') or die(mysql_error()); 
     echo 'here 2'; 
     if(!$db) 
     { 
     echo 'here 3'; 
     } 
     $db_selected=mysql_select_db("alphaes", $db); 
     echo 'here 4'; 

     if (!$db_selected) { 
     die ('Can\'t use foo : ' . mysql_error()); 
     } 
     echo 'here 5'; 
    } 
    catch (Exception $e) 
    { 
     echo 'Caught exception: ', $e->getMessage(), "\n"; 
    } 

問題是,該頁面的唯一輸出是'here 1'。如果我註釋掉所有的數據庫代碼,頁面加載好。連接代碼有問題,但是我沒有看到寫入瀏覽器的mysql_error或異常。它們是否會在某處登錄到某個文件?任何人都可以看到代碼的問題?

用戶名和密碼都正確。

任何幫助是非常讚賞,

馬克

+0

異常將永遠不會被提出,因爲mysql驅動程序不支持它們,但對於其餘的它是奇怪的。我建議把那個愚蠢的死()改成更聰明的東西。如果(!$ db)拋出東西 – 2011-01-10 12:34:08

+7

`ini_set('display_errors','On'); error_reporting(E_ALL);`---把這個放在腳本的開頭 – zerkms 2011-01-10 12:34:57

回答

0

謝謝大家誰回答 - 原來,這是非常'初學者'錯誤 - mysql未在php配置文件中啓用。

-1

如果只輸出 「在這裏1」,這意味着代碼停在:

$db=mysql_connect('localhost', 'root', 'password') or die(mysql_error());

我想這是因爲mysql_error需求從mysql_connect獲取最後一個連接,並且連接失敗。

來自文檔:

MySQL連接。如果未指定鏈接標識符,則假定由mysql_connect()打開的最後一個鏈接。 如果沒有找到這樣的鏈接,它會嘗試創建一個,就好像調用mysql_connect()時沒有參數。如果未找到或建立連接,則會生成E_WARNING級別錯誤。

(重點煤礦)

http://php.net/manual/en/function.mysql-error.php

試着改變mysql_error一些字符串輸出,看看它是否工作。如果有效,那麼錯誤在數據庫連接中。

-1

嘗試不使用密碼:$db=mysql_connect('localhost', 'root', '') or die(mysql_error());

2

這裏是與異常處理使用較新的mysqli擴展結合一個很簡單的例子:

<?php 

ob_start(); 

try 
{ 
    $db = new mysqli("localhost", "foo_dbo", "pass", "foo_db", 3306); 

    if ($db->connect_errno) 
     throw new exception(sprintf("Could not connect: %s", $db->connect_error)); 

    $sqlCmd = "select * from users order by username"; 
    $result = $db->query($sqlCmd); 

    if(!$result) throw new exception(sprintf("Invalid query : %s", $sqlCmd)); 

    if($db->affected_rows <= 0){ 
     echo "no users found !"; 
    } 
    else{ 
     $users = $result->fetch_all(MYSQLI_ASSOC); 
     foreach($users as $u) echo $u["username"], "<br/>"; 
    } 
    $result->close(); 
} 
catch(exception $ex) 
{ 
    ob_clean(); 
    echo sprintf("zomg borked - %s", $ex->getMessage()); 
} 

if(!$db->connect_errno) $db->close(); 
ob_end_flush(); 
?>