Wednesday, July 29, 2009

My own PHP query builder

say you have this array of column name and its value:

$arr = array('str' => 9, 'agi' => 10, 'name' => 'foo')

use this query builder to create your insert or update query:

function query_builder($arr, $table_name, $type, $clause="") {
if ($type == "insert") {
$q = "$type into $table_name";
$keys = "";
$values = "";
foreach ($arr as $key => $value) {
$keys .= "`$key`, ";
$values .= "?, ";
}
$keys = substr_replace($keys,"",-2);
$values = substr_replace($values,"",-2);
$q .= "($keys) values($values)";
}
else if ($type == "update") {
$q = "$type $table_name set ";
foreach ($arr as $key => $value) {
$q .= "`$key` = ?, ";
}
$q = substr_replace($q,"",-2);

$q .= " where $clause";
}
return $q;
}

example:
$q = query_builder($arr,"table_1","insert");
or
$q = query_builder($arr,"table_1","update","id = 123");

$values = array_values($arr);

//fyi, my DB uses PDOStatement->execute
$db = new DB();
$db->run($q, $values);

No comments:

Post a Comment