Domanda

Sto imparando php pdo; il mio ambiente è: NetBeans 6.5.1, XAMPP 1.7.0 e ho questo codice, che sembra connettersi.

  • Se cambio dbname in uno inesistente, viene generata un'eccezione " db non esiste "
  • Se cambio utente, genera " login errato ")

ma quando chiamo $ cn- > query, genera:

  

Si è verificata un'eccezione Win32 non gestita in apache.exe

Cosa sto sbagliando?

$hostname = 'localhost';
$username = 'crb';
$password = 'letmein';
try {
    $cn = new PDO("mysql:host=$hostname;dbname=bitacora", $username, $password);
    echo 'Connected to database<br />';
    $sql = "SELECT * FROM usuario WHERE login = '".$login."' AND clave = '".$clave."'";
    // Error here
    foreach ($cn->query($sql) as $row) {
        print $row['login'] .' - '. $row['clave'] . '<br />';
    }
} catch (PDOException $e) {
    echo $e->getMessage();
} catch (Exception $e) {
    echo $e->getMessage();
}
È stato utile?

Soluzione

Questo è un bug in XAMPP 1.7.0. Esegui l'upgrade a 1.7.1 o segui queste istruzioni per correggere l'installazione 1.7.0.

Altri suggerimenti

$ cn è valido? Controlla il valore di ritorno. Quello che hai descritto finora non mi convince che tu sia connesso.

Se non lo hai già fatto, mi assicurerei che il tuo ambiente funzionasse correttamente.

  1. Controlla per assicurarti che l'utente lavori con MySQL stesso (usando qualcosa come mysqlquery).
  2. Controlla per assicurarti che php possa connettersi a MySQL. Installo phpmyadmin su tutte le nuove configurazioni (anche se non lo lascio sul posto) per assicurarmi di avere una buona connessione funzionante.
  3. Avere DOP attraverso eccezioni sugli errori (vedere http: // us2 .php.net / manual / it / pdo.error-handling.php ) per vedere subito dove si verificano gli errori.

La mia ipotesi è che non ti connetti mai a MySQL, il che spiegherebbe l'impossibilità di cambiare il database.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top