Metodo Php

Salve ragazzi volevo alcuni chiarimenti su  un metodo in Php.

Ho una tabella(persona) di un database così composta:

id---nome---cognome---residenza---datanascita

Ho il seguente metodo:

public static function getnominativi($nominativiID){

$sql="SELECT * FROM \"persona\"WHERE\"ID\"=$nominativiID";

$res=pg_query(DataManager::_getConnection(),$sql);

if(!($res && pg_num_rows($res))){

die ("Fallito restituzione nominativi $nominativiID");

}

return pg_fetcg_assoc($res);

}

}

Ora supponiamo che nel db ci siano i seguenti dati:

id-------nome--------cognome--------------residenza---------------------datanascita

1-------Antonio------Rossi-------------------Milano-------------------------1980

2-------Paolo---------Verde-------------------Roma--------------------------1978

Se $nominativiID vale 1 nella variabile $res memorizzerò il risultato della riga:

1-------Antonio------Rossi-------------------Milano-------------------------1980

giusto?

Quindi la variabile $res non è un valore booleano? Allora perchè lo mette nell'if?

inviato 4 anni fa
bismark2005
X 0 X

Hai ragione: la variabile $res non è un valore booleano, ma una risorsa come viene specificato qui.

Una delle cose bellissime e che apprezzo tanto di PHP (a volte ai nuovi del linguaggio può dare qualche problema) è proprio quella di riuscire a identificare e gestire nelle condizioni, i vari tipi di variabile tramite il casting automatico, senza per forza stare lì a farli esplicitamente. Ciò che intendo è che la tua risorsa esiste, non è falsa, non è 0, non è vuota, non è un array vuoto, non è un oggetto con nessun membro, non è null e non è un oggetto SimpleXML creato da tag vuoti.

PHP incontra una selezione durante l'esecuzione del tuo codice, e la considera logicamente in questo modo:

if(!((bool) $res && (bool) pg_num_rows($res))){

die ("Fallito restituzione nominativi $nominativiID");

}

Per altro dai un'occhiata qui.

risposto 4 anni fa
zeropingas
modificato 4 anni fa
X 0 X

In realtà dentro $res c'è pg_query. In php.net dice:

A query result resource on success or FALSE on failure

Questo vuol dire che potrebbe restituire anche un valore false

risposto 4 anni fa
bismark2005
Certo che può restituire false. Dal link della mia risposta lo si sarebbe intuito.zeropingas 4 anni fa
È vero, la funzione può restituire pg_query o false. Io mi riferivo al tuo esempio particolare in cui hai dato già una tabella piena con una query precisa. FALSE te lo può dare nel momento in cui la query ha qualche problema sintattico.zeropingas 4 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda