note 100479 deleted from mysqli.query by googleguy

From: Date: Tue, 22 Oct 2013 12:16:02 +0000
Subject: note 100479 deleted from mysqli.query by googleguy
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-197117@lists.php.net to get a copy of this message
Note Submitter: Charlie Chan ---- You can create similar generic statements for updates and deletes. <?php function genericUpdate($tablename, $opts, $where) { $opts = cleanseArray($opts); $keys = array_keys($opts); $vals = array_values($opts); $setString; $whereString; for ($i = 0; $i < count($keys); $i++) { if (in_array($keys[$i], $where)) { if (!isset($whereString)) $whereString = $keys[$i]." = '".$vals[$i]."'"; else $whereString = $whereString." AND ".$keys[$i]." = '".$vals[$i]."'"; } else { if (!isset($setString)) $setString = $keys[$i]." = '".$vals[$i]."'"; else $setString = $setString.", ".$keys[$i]." = '".$vals[$i]."'"; } } $sql = "UPDATE $tablename SET ".$setString." WHERE ".$whereString; logDebug("SQL TO Update KEYS: ".$sql); return dbQuery($sql); } function genericDelete($tablename, $opts) { $opts = cleanseArray($opts); $keys = array_keys($opts); $vals = array_values($opts); $whereString; for ($i = 0; $i < count($keys); $i++) { if ($i == (count($keys) - 1)) $whereString = $whereString.$keys[$i]." = '".$vals[$i]."'"; else $whereString = $whereString.$keys[$i]." = '".$vals[$i]."' AND "; } $sql = "DELETE FROM ". $tablename . " WHERE " . $whereString; logDebug("SQL TO DELETE KEYS: ".$sql); return dbQuery($sql); } ?> Just be sure that you cleanse your arrays before input into DB. <?php function cleansePureString($str, $char = '\\') { ///[^a-zA-Z0-9\s]/ NON ALPHA $cleansed = preg_replace("/[%_'\"]/", '', $str); //_, % and ' //logDebug("CLEANSED VAL: ".$cleansed); return $cleansed; } function cleanseArray($opts) { $cleansedArray = array(); $keys = array_keys($opts); $vals = array_values($opts); for ($i = 0; $i < count($keys); $i++) { $newKey = cleansePureString($keys[$i],"'"); $newVal = cleansePureString($vals[$i],"'"); $cleansedArray[$newKey] = $newVal; } return $cleansedArray; } ?>

« previous php.notes (#197117) next »