Pagine « Indietro 1 2 Mostra Tutte Avanti »

Questo articolo, di base per quanto riguarda il php, da per scontate le conoscenze sull’utilizzo dei database ma presenterà comunque degli esempi per i casi più comuni in modo da poter iniziare a fare pratica o risolvere piccoli problemi.
Alcuni hosting come aruba non danno un database nella configurazione standard/economica, in altervista, netsons e simili il database deve essere attivato e potete farlo dal pannello di amministrazione dove trovate i dati per la connessione.
- Create un nuovo database
- Create un utente per quel database se non ne volete utilizzare uno esistente
- Create un’associazione utente database
Connessione al database
Prima di iniziare ad effettuare delle operazioni su un database dovete effettuare la connessione allo stesso e selezionare il database che volete utilizzare.
La funzione mysql_connect($db_host, $db_user, $db_password); restituisce un id di connessione o false se non è riuscito a connettersi.
La funzione mysql_select_db($db_name, $db); dove $db è un id di connessione, seleziona il database $db_name e restituisce true o false a seconda.
La funzione mysql_error(); stampa l’ultimo errore mysql.
La funzione mysql_close(); chiude la connessione con il database, non è obbligatorio chiudere la connessione alla fine di uno script dato che viene chiusa automaticamente ma risulta utile se nello stesso script vogliamo connetterci a più database diversi e dobbiamo quindi chiudere la connessione con il primo per connetterci al secondo.
Durante il debugging dell’applicazione le prime due funzioni vengono spesso chiamate con un die alla fine e la stampa dell’errore mysql
-
<?php
-
$db_host = 'localhost';
-
$db_user = 'username';
-
$db_password = 'pass';
-
$db_name = 'nomedb';
-
-
$db = mysql_connect($db_host, $db_user, $db_password) or die(mysql_error());
-
$db2 = mysql_select_db($db_name, $db) or die(mysql_error());
-
?>
Che sta per: esegui la funzione e se qualcosa va male termina subito la tua esecuzione e stampa l’errore.
Questo ci permette di risolvere subito alcuni problemi, ad esempio se il nome host è sbagliato verrà visualizzato un errore simile a:
Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host ‘host_errato’ (11001) in /percorso/del/file.php on line 7
Unknown MySQL server host ‘host_errato’ (11001)
dove ci dice la funzione che ha causato l’errore, quale errore, in che file si trova e la riga del file dove si è verificato l’errore.
Questo modo di procedere non dovrebbe essere utilizzato nell’applicazione che viene messa online, messaggi strani potrebbero spaventare gli utenti o rivelare informazioni sulla struttura interna del sito.
Meglio quindi controllare se la connessione è andata a buon fine e in caso di errore visualizzare un messaggio del tipo “Il nostro server è andato a giocare a tennis, non ti preoccupare torna subito”.
Ogni script php che accede al database deve effettuare queste operazioni prima di procedere.
Per evitare ridondanza nel codice e avere quindi la possibilità di modificare più facilmente il sito è meglio creare un file unico da includere in tutti gli script che utilizzano il database.
Un esempio potrebbe essere questo:
-
<?php
-
// Dati per la connessione al database
-
$db_host = 'localhost';
-
$db_user = 'username';
-
$db_password = 'pass';
-
$db_name = 'nomedb';
-
-
// funzione per la connessione e selezione del database
-
function blobDbConnect($db_host, $db_user, $db_password, $db_name){
-
$db = mysql_connect($db_host, $db_user, $db_password);
-
if ($db == FALSE){
-
return false;
-
}
-
$db2 = mysql_select_db($db_name, $db);
-
if ($db2 == FALSE){
-
return false;
-
}
-
return true;
-
}
-
?>
Il file php che utilizza questo file di configurazione si connette al database in questo modo:
-
// Include il file di configurazione
-
include("config.php");
-
-
// Se la connessione non riesce stampa un messaggio di errore
-
if(!blobDbConnect($db_host, $db_user, $db_password, $db_name)) {
-
print "Non riesco a connettermi al database";
-
/*
-
oppure altre operazioni come passare ad una pagina di errore
-
o quello che si ritiene necessario
-
*/
-
}
Pagine Prima Pagina 1 2Tutte2.




alle 10:14
Ciao,
è possibile fare due query sql di fila?
alle 10:24
se ti riferisci a fare qualcosa del tipo
$qh = mysql_query($primaquery);
//eventuali operazioni
$qh = mysql_query($secondaquery);
//e così via
nessuno ti vieta di farlo.
se vuoi fare due query nella stessa mysql_query() dipende, in teoria si potrebbe fare separando le query con un ;
ma in genere questa possibilità viene limitata anche per evitare sqlinjections
ovviamente una cosa del genere non avrebbe senso
$qr = mysql_query(“Select * from tabella; select * from altra tabella”);
perchè $qr prende il risultato di una sola query
avrebbe più senso farlo per una insert, ma anche in questo caso non c’è bisogno di fare più query, basta utilizzare una query del genere:
INSERT INTO tabella (nome1, nome2)
VALUES
(dato, altrodato),
(blabla, blabla),
(valore, valore2)
per inserire più valori nella stessa query, in questo modo guadagneresti anche in prestazioni
alle 10:31
Complimenti per la spiegazione davvero utile pero’ la cosa che mi chiedevo era anche possibile farlo per una pagina in particolare cioe’ facendo uscire i dati di un database in una pagina di un sito diverso conoscendo sia password che nome utente dei due database
alle 11:06
Certo, basta che nella connessione al database utilizzi i dati del database remoto.
In questo caso se utilizzi due database devi disconnetterti dal primo prima di utilizzare il secondo con mysql_close(); che normalmente non è necessaria perchè viene eseguita automaticamente al termine dell’esecuzione dello script.
Oppure puoi rimanere connesso ad entrambi i database ma in questo caso devi specificare per quale connessione stai facendo le query con mysql_query(“query”, $idConnessione); dove $idConnessione è il valore restituito dalla connect.
Buona parte degli hosting non permettono la connessione al database dall’esterno e in questo caso puoi utilizzare uno script che ti faccia da ponte.
alle 15:28
Grazie per la risposta pero’ mi sono accorto di una cosa che non mi ha preso solo i dati che volevo ma anche altri dati che non c’entravano niente tipo come avesse fatto una copia del sito dove volevo prendere i dati
c’e’ qualche link per farti vedere il codice e casomai darmi un consiglio grazie per la disponibilita’
alle 17:43
Il forum serve proprio a questo