-2

I have scripts provided by another coder that use Medoo for database functions. I have a script to delete one item at a time but now I need to delete multiple rows according to a list submitted from checkboxes. For example:

$delete = "123, 124, 125, 126";

global $db;
$sql = db::query("DELETE FROM users, [id IN '$delete']");

Unfortunately the documentation and examples provided for Medoo are sparse and do not cover IN examples. So I am looking for suggestions.

WilliamK
  • 821
  • 1
  • 13
  • 32

3 Answers3

1

Really simple. Just provide an array with ids.

$database->delete("users", [
    "id" => [123, 124, 125, 126]
]);
Angolao
  • 986
  • 1
  • 15
  • 27
0
$delete = "123, 124, 125";        // original string

$delete = explode(',',$delete);   // convert to array

foreach($delete as $id) {         // walk wthrough array items

$database->delete("users", [      // run medoo query 
"AND" => [
    "id" => intval($id)          // if whitespaces, make an integer
    ]
]);
}
WilliamK
  • 821
  • 1
  • 13
  • 32
0

see medoo delete method http://medoo.in/api/delete

$database->delete("account", array(
    "id" => array(123, 124, 125, 126)
));

or

$delete = "123, 124, 125";        

$ids_array= explode(',', $delete);  

foreach($ids_array as $id) {        
 $database->delete("users", array("id" => $id));
}

or

$ids_array= explode(',', '123, 124, 125'); 

function delete_by_id($value, $key){
  global $database;
  $database->delete("users", array("id" => $value));
}

array_walk($ids_array,"delete_by_id");

or ......

$ids_array= explode(',', '123, 124, 125'); 
array_walk($ids_array, function($value, $key) use (&$database){
   $database->delete("users", array("id" => $value));
});

You can check through the last query performed:

echo $database->last_query();
Deror
  • 51
  • 3
  • The best solution had already been submitted, tried and proven. Yes, there is a help page for "delete" which is useless for an array. – WilliamK Feb 09 '15 at 20:45