Requêtes paramétrées
-
10-10-2019 - |
Question
Je suis en train d'apprendre les requêtes paramétrées comme il y a des avantages à les utiliser.
Quelqu'un pourrait-il donner quelques conseils en convertissant ce bloc de code à une version paramétrée?
Merci.
if(isset($_GET['news_art_id']) && (!empty($_GET['news_art_id'])))
{
$news_art_id = htmlentities(strip_tags($_GET['news_art_id']));
$news_art_id = validate_intval($news_art_id);
//echo $news_art_id;
$_SESSION['news_art_id'] = $news_art_id;
// Assign value to status.
$onstatus = 1;
settype($onstatus, 'integer');
$query = 'SELECT M.id, M.j_surname, M.j_points_count, M.j_level, A.j_user_id,A.id, A.jart_title, A.jart_tags, A.jart_description, A.jart_createddate FROM jt_articles A, jt_members M WHERE M.id = A.j_user_id AND A.id = ' . check_db_query_id($news_art_id) . " AND A.jart_status = $onstatus;";
$result = mysql_query($query) or die('Something went wrong. ' . mysql_error());
$artrows = mysql_num_rows($result);
}
La solution
dans votre cas, il n'y a aucun avantage, rappelez-vous une requête nécessite 2 appels paramétré à la db: un pour configurer le modèle de requête et d'analyse, par l'autre pour remplir le modèle requête params et est généralement utilisé lors de la boucle. Donc, dans ce cas, vous êtes mieux d'appeler une procédure stockée (toujours le meilleur choix) ou en utilisant sql en ligne et en vous assurant que vous utilisez http://php.net/manual/en/function.mysql-real-escape-string.php le cas échéant.
Autres conseils
La règle générale est:. Chaque variable doit être binded, aucune variable inline du tout
Détails techniques: http://php.net/manual/en/pdo.prepare .php