Salve a tutti
Avrei questo quesito da porvi:
Partendo dalla mia connessione al database mysql nel file config.php:
Codice PHP:
$dsn = 'mysql:dbname=my_db;host=localhost';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';
try
{
$pdo = new PDO($dsn,$user,$pass,$charset);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e){
// otteniamo l'errore
echo 'Error: ' . $e->getMessage();
echo 'Line: ' . $e->getLine();
echo 'File: ' . $e->getFile();
}
//Funzione lista bianca che mi servirà successivamente per ordinare le query select
function white_list(&$value, $allowed, $message) {
if ($value === null) {
return $allowed[0];
}
$key = array_search($value, $allowed, true);
if ($key === false) {
throw new InvalidArgumentException($message);
} else {
return $value;
}
}
Vorrei capire se la connessione cosi impostata è fatta bene e credo sia cosi visto che richiamando il file config.php non mi risulta alcun errore.
A questo punto iniziano i miei grattacapi perchè dovrei modificare questa query :
Codice PHP:
$slide_query = "SELECT * FROM pictures ORDER BY position ASC";
$slide_result = mysqli_query($slide_query);
while($slide_sql = mysqli_fetch_array($slide_result))
reimpostandola con utilizzo delle pdo.
Da quanto ho letto con le pdo la query SELECT * FROM pictures ORDER BY position ASC presenta qualche inconveniente perchè, a differenza di mysqli , non si può ordinare "in maniera generica" ma bisogna impostare delle variabile opportune ed implementare una white_function nel file config.php
Codice PHP:
$orderby = white_list($_GET['orderby'], ["position"], "Invalid field name");
$direction = white_list($_GET['direction'], ["ASC","DESC"], "Invalid ORDER BY direction");
$slide_query=$pdo->prepare("SELECT * FROM pictures WHERE column = :position ORDER BY ".$order ." ".$direction");
$slide_query->bindParam(':my_param', $is_live, PDO::PARAM_STR);
if ($slide_query->execute($_POST[‘position’])); {
while($slide_sql = $slide_query->fetch_all(PDO::FETCH_ASSOC));
}
Qualche buon anima che mi possa aiutare a capire...?