Eliminar pero mantener filas con id en matriz php/mysql
Frecuentes
Visto 3,221 veces
3 Respuestas
5
DELETE FROM table1
WHERE id NOT IN (13, 19, 22, 3129)
En PHP, puede utilizar el implosión () función para construir la cláusula IN.
$items = implode(",", $items);
$sql = "DELETE FROM table1 WHERE id NOT IN ({$items})";
contestado el 22 de mayo de 12 a las 18:05
1
Use implode pero no configure la misma variable de matriz que podría usar más adelante en su programa, ya que tampoco se recomienda ni se toma como una buena práctica de programación cambiar el tipo de datos de una variable así como así.
$items= array(13, 19, 22, 3129);
$sql = sprintf("delete from tbl where id_col not in (%s)",implode(",", $items));
contestado el 22 de mayo de 12 a las 19:05
1
If mytable
es grande pero el número de entradas a mantener es pequeño, aquí hay una forma más rápida
$items= array(13, 19, 22, 3129);
$sql = "CREATE TABLE mynewtable LIKE mytable";
mysql_query($sql);
$id_list = sprintf("(%s)",implode(",", $items));
$sql = "INSERT INTO mynewtable SELECT * FROM mytable WHERE id_col IN " . $id_list;
mysql_query($sql);
$sql = "DROP TABLE mytable";
mysql_query($sql);
$sql = "ALTER TABLE mynewtable RENAME mytable";
mysql_query($sql);
contestado el 22 de mayo de 12 a las 19:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php mysql or haz tu propia pregunta.