Tip: Ahorrar consultas en MySQL
Por: alex | 12 Marzo 2007 | Ver comentarios |
Seguramente los usuarios más experimentados ya están al tanto de que, a partir de MySQL 4.1, se puede usar una sentencia ON DUPLICATE KEY UPDATE, que permite actualizar los campos que se especifiquen si es que falla la inserción al no cumplirse las restricciones PRIMARY KEY o UNIQUE.
Por ejemplo, el siguiente código:
function recommend( $post ) {
global $wpdb;
if( array_search( $post, $_SESSION['recpost'] ) == NULL && is_numeric( $post ) ) {
$r = mysql_query( 'SELECT * FROM '.$wpdb->prefix.'recit WHERE id_post = '.$post );
if( mysql_num_rows( $r ) == 0 ) {
$q = 'INSERT INTO '.$wpdb->prefix.'recit SET rec = rec+1, id_post = '.$post;
}
else {
$q = 'UPDATE '.$wpdb->prefix.'recit SET rec = rec+1 WHERE id_post = '.$post;
}
$wpdb->query( $q );
$_SESSION['recpost'][] = $post;
}
}Se puede resumir en:
function recommend( $post ) {
global $wpdb;
if( array_search( $post, $_SESSION['recpost'] ) == NULL && is_numeric( $post ) ) {
$q = "INSERT INTO {$wpdb->prefix}recit (rec, id_post) VALUES (0, '$post')
ON DUPLICATE KEY UPDATE rec = rec + 1";
$wpdb->query( $q );
$_SESSION['recpost'][] = $post;
}
}En fin, espero que sea de utilidad para alguien


Sergio Charles
3 de Julio de 2007, 01:59:23 pm
Me parece exelente que compartas con todos lo que tu sabes, espero que lo siempre sea asi…