Las consultas parametrizadas
-
10-10-2019 - |
Pregunta
Actualmente estoy aprendiendo consultas parametrizadas, ya que hay ventajas en el uso de ellos.
¿Puede alguien dar algunas indicaciones mediante la conversión de este bloque de código a una versión parametrizada?
Gracias.
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);
}
Solución
en su caso, no hay ninguna ventaja, recuerda una consulta parametrizada requiere 2 llamadas a la base de datos: una para configurar la plantilla de consulta y de análisis sintáctico, el otro para rellenar los parametros plantilla de consulta y se usa típicamente cuando bucle. Así que en este caso es mejor llamar a un procedimiento almacenado (siempre la mejor opción) o el uso de SQL en línea y asegurándose de que utiliza http://php.net/manual/en/function.mysql-real-escape-string.php cuando sea aplicable.
Otros consejos
La regla general es:. Cada variable debe ser binded, hay variables en línea en absoluto
Detalles técnicos: http://php.net/manual/en/pdo.prepare .php