Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Interrogare e modificare una tabella

Come modificare e interrogare i dati conservati in un database MySQL con PHP
Come modificare e interrogare i dati conservati in un database MySQL con PHP
Link copiato negli appunti

Una volta eseguita la connessione al nostro server MySQL (ricordiamoci sempre di controllare che questa sia andata a buon fine e che le informazioni passate siano corrette) siamo pronti per interrogare il database. L'interrogazione di una tabella di un database avviene tramite il metodo
query() dell'oggetto mysqli, che esegure una query sul database selezionato restituendo eventualmente un recordset che rappresenta i risultati al seguito di un'operazione di selezione.

Tramite il metodo query possiamo eseguire qualunque tipo di query SQL permessa all'account con il quale siamo connessi, ricordandoci che, per motivi di sicurezza, non saranno eseguite query multiple. Nel caso fosse necessario eseguire più di una query (usando il punto e virgola come separatore) possiamo utilizzare il metodo multi_query, che ha un comportamento analogo ma esegue una o più query.

$mysql->query("INSERT INTO autori VALUES ('', 'Gabriele', 'Farina')");
$results = $mysql->query("SELECT * FROM autori WHERE user LIKE 'gab%'");
echo "Autori corrispondenti a <b>gab%</b>: ".$results->num_rows."<br />";
$i = 1;
while($row = $results->fetch_assoc())
{
    sprintf("%d. %s %s <br />", $i, $row['surname'], $row['name']);
    ++$i;
}

Nel codice precedente inseriamo un record nella presunta tabella "autori", recuperiamo tutti quelli che hanno il nome che inizia per "gab", stampiamo il totale e la loro lista. Come possiamo notare nel caso in cui si effettui un'operazione di selezione viene restituito un oggetto (mysqli_result) che contiene metodi per iterare sulle righe recuperate, per conoscerne il totale e molto altro. La proprietà
num_rows di questo oggetto definisce il numero di righe recuperate; invece attraverso fetch_assoc() viene restituito sotto forma di array associativo il prossimo record trovato. Esistono altri metodi fetch_* che permettono di recuperare i dati in formati differenti.

Una delle cose più interessanti dell'estensione MySQL Improved è il supporto per i prepared statement. Un prepared statement è una query SQL di qualunque tipo che viene parzialmente compilata dall'engine MySQL e che può essere eseguita un numero multiplo di volte con parametri differenti e con alte prestazioni.

Il metodo prepare() permette di creare un prepared statement:

<?php

$mysql = new mysqli('localhost', 'root', '', 'test_html_it');

$stmt_1 = $mysql->prepare("SELECT * FROM numeri WHERE valore = ?");
$stmt_2 = $mysql->prepare("INSERT INTO numeri VALUES (?)");

for($i = 0; $i < 100; ++$i)
{
    $stmt_2->execute($i);
}

for($i = 0; $i < 100; $i += 7)
{
    $results = $stmt_1->execute($i);
    $result = $results->fetch_assoc();
    echo "Valore recuperato: ".$result['value']."<br />";
}

$mysql->close();

?

Nel codice precedente abbiamo preparato due query compilate, una di selezione ed una di inserzione. Poi abbiamo popolato una tabella con cento numeri ed abbiamo recuperato i multipli di sette. L'esempio è completamente inutile, ma fa comprendere il funzionamento dei prepared statement.

Il punto di domanda rappresenta un parametro alla query: in base al numero di punti di domanda dovranno essere passati un egual numero di parametri al metodo execute() dell'oggetto restituito da prepare(). È importante ricordare che i punti di domanda non vengono sostituiti all'interno di stringhe, e che sono automaticamente quotati se necessario.

Grazie ai prepared statement possiamo effettuare centinaia di query simili ottenendo dei netti miglioramenti nelle performance ed una migliore organizzazione del codice.

Ti consigliamo anche