2011-01-10 1 views
0

J'ai un problème lors de la tentative de connexion à une base de données my_sql. Je suis très nouveau à PHP, donc c'est probablement un problème très simple. Au sommet de mon index.php je le code suivant:php Problème de connexion 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"; 
    } 

Le problème est que la seule sortie de la page est « ici 1 ». Si je commente tout le code de la base de données, la page se charge bien. Il y a un problème avec le code de connexion, mais je ne vois pas l'erreur mysql_error ou l'exception écrite dans le navigateur. Sont-ils enregistrés dans un fichier quelque part? Quelqu'un peut-il voir un problème avec le code?

Le nom d'utilisateur et le mot de passe sont corrects.

Toute aide est très appréciée,

Mark

+0

exception ne sera jamais levée, car le pilote mysql ne les supporte pas, mais pour le reste c'est étrange. Je suggérerais de changer ce stupide die() en quelque chose de plus intelligent. if (! $ db) lance quelque chose par exemple –

+7

'ini_set ('display_errors', 'On'); error_reporting (E_ALL); '--- mettez ceci au début de votre script – zerkms

+0

@Col. Shrapnel: Je parie qu'il a juste l'extension mysql non branchée. – zerkms

Répondre

0

Merci à tous ceux qui ont répondu - se révèle qu'il était très Erreur 'débutants' - mysql n'a pas été activé dans le fichier de configuration php.

-1

Si elle ne sort que "ici 1" cela signifie que le code arrête à:

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

Je pense qu'il est parce que mysql_error besoins pour obtenir la dernière connexion de mysql_connect, et la connexion échoue.

De la documentation:

La connexion MySQL. Si l'identificateur de lien n'est pas spécifié, le dernier lien ouvert par mysql_connect() est supposé. Si un tel lien n'est pas trouvé, il essayera d'en créer un comme si mysql_connect() était appelé sans arguments. Si aucune connexion n'est trouvée ou établie, une erreur de niveau E_WARNING est générée.

(Souligné par l'auteur)

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

Essayez de changer mysql_error avec une sortie de chaîne et voir si cela fonctionne. Si cela fonctionne, l'erreur est dans la connexion à la base de données.

+0

non, il doesn pas –

-1

Essayez sans un mot de passe: $db=mysql_connect('localhost', 'root', '') or die(mysql_error());

2

est ici très simple exemple qui utilise la plus récente extension mysqli en liaison avec la gestion des exceptions:

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