我不打算重新发明轮子,但我想在PHP中创建一个简单的insertRow($table, $array)
方法。
$array
是一个关联数组,其形式为columnName => value
,可在表中插入。我打算以
INSERT INTO `tableName`(`$keys[0], $keys[1], etc`) VALUES (?,?,?)
然后绑定值,然后执行。但是,我不知道如何处理MYSQL函数(例如FROM_UNIXTIME)。我刚学会了我无法绑定函数,它必须出现在预处理语句中。
那么,有没有办法以一种不太复杂的方式处理MYSQL函数?
到目前为止,这是我的方法:
public function insertRow($table, $array){
$columns = count($array); //number of columns to insert
$keys = array_keys($array); //names of the columns
$vals = array_values($array); //values of corresponding names $array == ($keys => $vals)
$strCols = '(`'.implode("`,`", $keys).'`)'; //column names in SQL style string (`col1`, `col2`, `col3`, etc)
$strVals = $this->bindings_string($columns); //SQL style for binding values (?,?,?,etc.)
try{
$query = $this->db->prepare("INSERT INTO `$table`$strCols VALUES $strVals");
for($i = 0; $i < $columns; $i++){
$query->bindValue($i+1, $vals[$i]);
}
$query->execute();
}catch(PDOException $e){
echo '<b>Error: </b>', $e->getMessage();
}
}
private function bindings_string($count){
$strVals = '(';
for($i = 1; $i < $count; $i++){
$strVals .= '?,';
}
$strVals .= '?)';
return $strVals;
}