Visualizzazione dei risultati da 1 a 7 su 7

Discussione: No Database Selected

  1. #1

    No Database Selected

    Questo pezzo di codice è quello che uso in un file che includo in testa ad ogni mia pagina php.

    $db_host = "localhost";
    $db_user = "aa";
    $db_password = "aa";
    $db_name = "desideri";

    function aa_OpenConnection() {
    echo "Connessione al DB
    ";
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE) die ("Errore nella connessione.".mysql_error());
    else echo "Connessione al DB effettuata
    ";
    echo "Selezione del database DB
    ";
    mysql_select_db($db_name) or die ("Errore nella selezione del database.
    ".mysql_error());
    }
    Premetto che è la prima volta che uso php, apache e mysql.
    Funziona tutto: il server e l'interprete php vanno bene, unico dettaglio che siccome uso anche IIS, il server Apache ascolta su localhost:8080
    Ho definito il database "desideri" in phpmyadmin.
    Quando richiamo la funzione aa_OpenConnection();
    il risultato è questo

    Connessione al DB
    Connessione al DB effettuata
    Selezione del database DB
    Errore nella selezione del database.No Database Selected
    Ho controllato i privilegi per il database...

    Qualsiasi host - Qualsiasi utente
    Azione Host Utente Database Tabella Privilegi
    Revoca % root Tutti Tutti ALL PRIVILEGES
    Revoca localhost Qualsiasi Tutti Tutti ALL PRIVILEGES
    Revoca localhost aa Tutti Tutti ALL PRIVILEGES
    Revoca localhost root Tutti Tutti ALL PRIVILEGES


    Suggerimenti?
    Cazzimma Inside, Outside & All Around

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    43
    prova

    codice:
    mysql_select_db($db_name,$db)
    P.s. ma poi sta funzione dove la usi? nel senso che finita la funzione termina anche la connessione al db

  3. #3
    File aa_connessione.inc.php
    <?
    $db = "";
    $db_host = "localhost";
    $db_user = "aa";
    $db_password = "aa";
    $db_name = "desideri";

    function aa_OpenConnection() {
    echo "Connessione al DB
    ";
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE) die ("Errore nella connessione.".mysql_error());
    else echo "Connessione al DB effettuata
    ";
    echo "Selezione del database DB
    ";
    mysql_select_db($db_name,$db) or die ("Errore nella selezione del database.
    ".mysql_error());
    }

    function aa_CloseConnection() {
    mysql_close($db);
    }

    echo Connesso;
    ?>
    Primissime righe del file dove utilizzo la connessione pippo.php

    <?php
    include("aa_nocache.inc.php"); //serve per non memorizzare in cache la pagina
    include("aa_connessione.inc.php");
    aa_OpenConnection();
    $sql="SELECT * FROM UtentiTable ORDER BY Nick";
    $result = mysql_query($sql, $db) or die(mysql_error());
    ?>
    Facile, semplice e lineare.
    Adotto lo stesso sistema di include in ASP... mi trovo un amore... qua manco mi collego al DB
    Cazzimma Inside, Outside & All Around

  4. #4
    Le variabili che vuoi includere non sono visibili dalla funzione aa_OpenConnection. Passa le var come riferimento della variabile oppure come globali.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    un po' macchinoso il concetto delle variabili globali rispetto alla quasi totalità dei linguaggi, però ditelo... avevo il dubbio che dopo anni di programmazione fossi diventato scemo
    Grazie per l'aiuto, con i global funziona
    Cazzimma Inside, Outside & All Around

  6. #6
    [supersaibal]Originariamente inviato da flipeflop
    un po' macchinoso il concetto delle variabili globali rispetto alla quasi totalità dei linguaggi, però ditelo... avevo il dubbio che dopo anni di programmazione fossi diventato scemo
    Grazie per l'aiuto, con i global funziona [/supersaibal]
    è sbagliato il concetto alla base...ed è preferibile evitare l'utilizzo delle variabili globali

    il fatto che ci siano non implica la necessità di usarle, anzi, rendono molto più difficile il reutilizzo e la comprensiblità del codice stesso

    in C esiste il goto...ed ho visto alcuni software che un file che era una GIGANTESCA funzione e il soft si spostava usando il goto e le etichette per saltare da un punto all'altro...risultato...totalmente incomprensibile...va più veloce? certo...ma quando si compila basta dire al gcc di farlo e trasforma tutti i cicli usando il goto lui lasciando il codice estremamente leggibile
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #7
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    Naturalmente le variabili globali oltre che i goto (che sarebbero da bandire ) sono sconsigliatissime in ogni linguaggio.
    Fatti una funzione nel classico file config.php (una copia la tieni in locale l'altra sul server). Una roba del tipo

    codice:
    <?php
      function getParam($name)
      {
         switch($name)
         {
            case "dbhost":
              return("localhost");
    
            case "dbuser":
              return("pippo");
          
            // ecc...,ecc,...
     
           default:
               die("Parametro inesistente!");
         }
      }
    
    ?>
    Esiste anche la notazione define simile al C

    define("dbhost", "localhost");

    Fai te...

    Ricordati però che le variabili globali devono essere abilitate nei file di configurazione! Quindi se puoi non usarle è meglio per te e per chi dovesse usare i tuoi script.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.