2011-01-10 20 views
0

Ich habe ein Problem beim Versuch, eine Verbindung zu einer my_sql-Datenbank herzustellen. Ich bin sehr neu in PHP, also ist dies wahrscheinlich ein sehr einfaches Problem. An der Spitze meines index.php habe ich den folgenden Code:php my_sql Verbindungsproblem

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"; 
    } 

Das Problem ist, dass die einzige Ausgabe von der Seite ‚hier 1‘ ist. Wenn ich den gesamten Datenbankcode auskommentiere, wird die Seite geladen. Mit dem Verbindungscode ist etwas nicht in Ordnung, aber ich sehe den mysql_error oder die Ausnahme nicht im Browser. Werden diese irgendwo in einer Datei geloggt? Kann jemand ein Problem mit dem Code sehen?

Der Benutzername und das Passwort sind korrekt.

Jede Hilfe sehr geschätzt wird,

Mark

+0

Ausnahme wird nie ausgelöst werden, da mysql Treiber sie nicht unterstützen, aber für den Rest ist es seltsam. Ich würde vorschlagen, diesen dummen Würfel() zu etwas intelligenterem zu ändern. wenn (! $ db) etwas zum Beispiel werfen –

+7

'ini_set ('display_errors', 'On'); error_reporting (E_ALL); '--- setze dies am Anfang deines Skripts – zerkms

+0

@Col. Shrapnel: Ich wette, er hat nur mysql extention nicht eingesteckt. – zerkms

Antwort

0

Vielen Dank an alle, die geantwortet - stellt sich heraus, dass es sehr 'Anfänger'-Fehler - mysql war in der PHP-Konfigurationsdatei nicht aktiviert.

-1

Wenn es nur die Ausgänge "hier 1" das heißt der Code hält an:

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

Ich denke, es liegt daran, mysql_error Bedürfnisse um die letzte Verbindung von mysql_connect zu erhalten, und die Verbindung schlägt fehl.

Aus der Dokumentation:

Die MySQL-Verbindung. Wenn der Link-Bezeichner nicht angegeben ist, wird der letzte von mysql_connect() geöffnete Link angenommen. Wenn keine solche Verbindung gefunden wird, wird versucht, eine zu erstellen, als ob mysql_connect() ohne Argumente aufgerufen würde. Wenn keine Verbindung gefunden oder hergestellt wurde, wird ein E_WARNING-Ebenenfehler generiert.

(Hervorhebung von mir)

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

Versuchen mysql_error mit einigen Zeichenfolge Ausgabe ändern und sehen, ob es funktioniert. Wenn es funktioniert, liegt der Fehler in der Datenbankverbindung.

+0

Nein, es tut nicht t –

-1

Versuchen ohne Passwort: $db=mysql_connect('localhost', 'root', '') or die(mysql_error());

2

hier ist ein sehr einfaches Beispiel, das die neuere mysqli-Erweiterung in Verbindung mit Ausnahmebehandlung verwendet:

<?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(); 
?> 
Verwandte Themen