Mam taką metodę bind w klasie DB:
namespace nameOne; class DB { private $dbh; private $stmt; public function __construct() { $this->dbh = new \PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USER, DB_PASS); } public function bind($param, $value, $type = null) { switch (true) { $type = \PDO::PARAM_INT; break; $type = \PDO::PARAM_BOOL; break; $type = \PDO::PARAM_NULL; break; default: $type = \PDO::PARAM_STR; } } $this->stmt->bindValue($param, $value, $type); } }
W formularzu przesyłam checkboxy, wszystkie z tej samej tablicy, powiedzmy name="boxChecked[]".
I teraz chcę usunąć te rekordy z bazy w których ID mam przesłane w $_POST['boxChecked']
Robię to tak:
Ten kod działa.
{ $db = new DB(); foreach ($recordsIds as $row) { $row = (int) $row; $db->query("DELETE FROM `product_property` WHERE `product_property`.`product_id` = :id;"); $db->bind(':id', $row); $db->execute(); $db->query("DELETE FROM `product` WHERE `product`.`id` = :id;"); $db->bind(':id', $row); $db->execute(); } } //w innym miejscu wywołanie metody: $this->massDelete($_POST['boxChecked']); }
Moje pytanie: Czy to jest po bożemu zrobione? Czegoś brakuje? Z tego co się orientuję to dane z POST z checkboxa to tablica stringów, więc typowanie na int by sie przydało w metodzie massDelete, tak? Czy to >>> $row = (int) $row; wystarczy?