Доброго времени суток!
Постепенно учусь и отучаюсь от кода с запашком.
В данный момент интересует, можно ли такое как-то сократить, или это является нормалью?
Конкретно - несколько полей. Их может быть и 10, что будет выглядеть очень громоздко.
namespace mydir\models;
use mydir\common\Database;
class Edit {
// Допустим данные приходят уже проверенными
public function add($arrField)
{
$one = $arrField['one'];
$two = $arrField['two'];
$three = $arrField['three'];
$four = $arrField['four'];
$five = $arrField['five'];
$sql = "INSERT INTO `item` (`one`,`two`,`three`,`four`,`five`) VALUES (?,?,?,?,?)";
$placeholders = array($one,$two,$three,$four,$five);
return Database::insertQuery($sql,$placeholders); // id последней вставленной строки или ошибка
}
}
UPD: после небольших размышлений пришло в голову такое
class Edit
{
public function add($arr = null)
{
// Пример массива, который приходит
$arr = array(
'one' => 1,
'two' => 'test',
'three' => 'test',
'four' => 55,
'five' => 12);
$keys = array_keys($arr);
$a = implode(',',$keys);
$b = implode(',',array_fill(0,count($keys),'?'));
$sql = sprintf("INSERT INTO `test` (%s) VALUES (%s)",$a,$b);
$placeholders = array_values($arr);
return Database::insertQuery($sql,$placeholders);
}
}
Имеет право на жизнь?
Данные приходят проверенные, ключи массива совпадают со столбцами в БД.