Prima cosa, trasformiamo le righe relative alla chiamata alla query per la select in una funzione a sé stante. Ci torna utile fare così perchè intendiamo vedere com'é la nostra tabella inizialmente, poi dopo una delete e infine dopo una insert.
La nostra funzione list_product() ha come parametro in input la connessione improved a mysql, e non da niente in output.
Esegue la select sulla tabella, la mostra all'utente, e ritorna. Piccola ma significativa aggiunta, quando finiamo di utilizzare il recordset ritornato dalla query, chiamamo il suo metodo free(), per ripulire la memoria. E' un passo che andrebbe sempre fatto, per evitare memory leak.
function list_products($mysqli)Il corpo del nostro script PHP comincia connettendoci a MySql, non cambia niente da quanto abbiamo già visto, ma riporto lo stesso il codice, per completezza.
{
// Create the query
$query = "SELECT sku, name, price FROM products ORDER BY name";
echo "<br />Performing a select: query(\"$query\") ... ";
if($rs = $mysqli->query($query))
echo "OK<br />";
else
die('Invalid query: ' . $mysqli->error());
echo "<br />List of available items:<br />";
// Iterate through the result set
while(list($sku, $name, $price) = $rs->fetch_row())
printf("(%s) %s: \$%s<br />", $sku, $name, $price);
// after a SELECT we should always cleanup the resultset, when done
$rs->free();
}
// connect to the database server - notice the '@' to suppress warningAbbiamo la nostra connessione, adesso per prima cosa visualizziamo il contenuto della nostra tabella (chiamando la funzione che abbiamo definito sopra), poi eliminiamo una riga, ovvero facciamo una query con DELETE, e quindi richiamamo la nostra funzione per vedere l'effetto sulla tabella.
$mysqli = @new mysqli("host", "user", "password");
if(mysqli_connect_error())
die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
echo "Connection to MySql succeeded<br />";
echo "Selecting the current database schema: select_db() ... ";
$mysqli->select_db("test") or die($mysqli->error());
echo "OK<br />";
Da notare l'accesso ad affected_rows, membro di mysqli, per vedere quante righe sono state effettivamente eliminate.
Da notare inoltre che non si deve chiamare free sull'output di query(), dato che non abbiamo eseguito una SELECT, e quindi non c'è nulla da ripulire.
// dump the product tableUltimo passo: inseriamo una nuova riga, eseguendo una query con INSERT INTO, visualizziamo per l'ultima volta cosa c'é nella nostra tabella, e finalmente chiudiamo la nostra connessione a MySql.
list_products($mysqli);
// deleting a row
echo "<br />Deleting an item ... ";
$mysqli->query("DELETE FROM products WHERE sku = 'TY232278'");
printf("%d row has been deleted.<br />", $mysqli->affected_rows);
// dump the product table after the delete
list_products($mysqli);
// inserting a rowLa pagina che esegue il codice sopra descritto é questa.
echo "<br />Inserting an item ... ";
$query = "INSERT INTO products (sku, name, price) VALUES ('TY232278', 'AquaSmooth Toothpaste', 2.26);";
$mysqli->query($query);
printf("%d row has been inserted.<br />", $mysqli->affected_rows);
// dump the product table after the insert
list_products($mysqli);
echo "<br />Closing the connection to MySql ... ";
if($mysqli->close())
echo "OK<br />";
else
echo "failed!<br />";
Nessun commento:
Posta un commento