¡Hola a tod@s! Recientemente vi el anuncio en el foro sobre la declaración de las funciones para MySQL como obsoletas a largo plazo, así que me puse a aprender MySQLi. He aquí unas dudas que tengo:
Código PHP:
if ( $query = $mysqli->query( 'SELECT MAX(position) FROM notes' ) )
{
$row = $query->fetch_array( MYSQLI_NUM );
$position = $row[0] + 1;
if ( $query = $mysqli->prepare( 'INSERT INTO notes (text, date, position) VALUES (?, ?, ?)' ) )
{
$date = time();
$query->bind_param( 'sii', $text, $date, $position );
$query->execute();
echo self::serialized_return( $mysqli->insert_id, $text, $date );
}
else
throw new Error( 'Error al intentar añadir la nota.' );
}
else
throw new Error( 'Error al intentar añadir la nota.' );
1. ¿El manejo de errores es correcto? Quiero decir, ¿basta con comprobar si $query se declara correctamente o $query->execute() también puede devolver algún error?
2. Esto ya sobre PHP, ¿puedo hacer algo para no tener que repetir el else dos veces?
Código PHP:
foreach ( $positions as $position => $id )
$query_vals[] = ' WHEN ' . (int)$id . ' THEN ' . ( (int)$position + 1 );
if ( $query = $mysqli->prepare( 'UPDATE notes SET position = CASE id ' . implode( $query_vals ) . ' END' ) )
{
$query->execute();
throw new Success( 'Las notas fueron ordenadas correctamente.' );
}
1. En este otro código, en vez de construir la consulta con un bucle y depués ejecutarla, ¿puedo utilizar $query->bind_param() como en el código de arriba para que me vaya agregando los datos del array?
2. En este código en el que las variables externas son forzadas a ser del tipo integer, ¿es más seguro utilizar una consulta preparada o puedo ejecutarlo con mysqli:query()?
Gracias por responder.
Saludos.