- Aprende a utilizar sentencias preparadas.
- Intenta tener un control (más o menos) sobre los datos que manejas. Si usas el ID únicamente como un integro, asegúrate que es un integro.
- Usar isset y empty viene a ser algo así como comprobar que tienes las llaves en el bolsillo y sacarlas del bolsillo para comprobar que las tienes... a la vez.
- Aprende a utilizar Try/Catch en vez de usar el "OR ELSE".
<?php
$mysqli = new mysqli('localhost', 'root', 'contraseña','seguridad');
if($mysqli->connect_errno){
}
// con (int) te aseguras que manejas un integro.
$id = (int) $_GET['id'];
// sentencia preparada
$query = "SELECT text,title FROM news where id=?";
try {
$stmt = $mysqli->prepare($query);
$stmt->bind_param('i', $id); // i de integer.
$stmt->execute();
$result = $stmt->get_result();
$stmt->close();
// Si la consulta devuelve 1 o más resultados...
// recogemos el resultado.
if($result->num_rows > 0){
$result = $result->fetch_assoc();
} else {
$result = false;
}
// Si hay error en la consulta...
} catch(Exception $e){
die('Error con la consulta -> '. $e->getMessage()); }
// Resultado.
if($result){
} else {
echo 'No hay resultados.';
}
} else {
echo 'Haga una consulta al ID.';
}
Referencias:http://php.net/manual/es/mysqli.prepare.phphttp://php.net/manual/es/language.types.integer.php (#Conversión de numeros a enteros).
http://php.net/manual/en/mysqli-stmt.bind-param.phphttp://php.net/manual/es/mysqli-stmt.get-result.phphttp://php.net/manual/es/class.exception.phpSaludos