Domanda

Sto aggiornando un po 'di codice dalle vecchie funzioni mysql_ * a PDO. Si collega senza problemi, esegue la query senza problemi, ma il gruppo di risultati è vuoto. PDO :: query () dovrebbe restituire un oggetto PDOStatement, ma in cambio sto diventando vero. Non vengono segnalati errori.

Ecco il mio codice:


try
{
    $DB = new PDO("mysql:host=localhost;dbname=dbname", "user", "pass");
    $stmt = $DB->prepare("SELECT * FROM report_clientinfo");
    $stmt->execute();
}catch(PDOException $e)
{
    echo $e->getMessage() . "\n";
}


echo gettype($stmt) . "\n";
if ($stmt) echo "true\n";
else echo "false\n";

$resultset = $stmt->fetchAll();

if(empty($resultset))
{
    exit("ERROR: getClientInfo query failed.");
}

$DB = null;

print_r($resultset);

L'output che sto vedendo è:

oggetto vero ERRORE: query getClientInfo non riuscita.

Qualche idea sul perché non sta restituendo alcun risultato?

È stato utile?

Soluzione

object  
true  
ERROR: getClientInfo query failed.

Mi sembra che la tua variabile PDOStatement $ stmt sia effettivamente segnalata come un oggetto, non " true " ;. Il codice quindi stampa " true " quando vede che $ stmt non è null, lo è perché è un oggetto.

Ti consiglio di controllare il valore di ritorno da $ stmt- > execute () . Potresti avere un errore SQL. Ad esempio, se hai sbagliato l'ortografia del nome della tabella o la tabella non esiste nel database " dbname " a cui ti sei connesso o l'utente con cui accedi non ha il privilegio di interrogare quella tabella.

Controlla anche $ stmt- > errorInfo () per ottenere maggiori dettagli su qualsiasi errore che si è verificato.

Altri suggerimenti

Sono un po 'imbarazzato nel riferire che stavo indicando il DSN sbagliato. Immagino che sia quello che ottengo cercando di imparare qualcosa di nuovo in poche ore di sonno dopo essere uscito per Capodanno. Grazie per il suggerimento sul metodo PDOStatement :: errorInfo (), non l'avevo notato prima.

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