Задать вопрос
@SvizzZzy

Существует ли удобный способ добавления записи (insert) в php mysqli?

К примеру, в nodejs это можно делать так:

var values = {
id: null,
var1:variable1,
var2:variable2,
...
}; 

q.query('insert into `messages` set ?', values);


Т.е хотелось бы добавлять записи в таблицу по имени поля, а не порядку нахождения поля в таблице.
Когда нужно добавлять очень много записей, легко начинаешь путаться в их порядке нахождения в таблице, если использовать такой метод:
$_DB->query("insert into `table` values(1,2,3,4,5...");
а иногда некоторые поля и вовсе не нужны, приходится писать '' пустые ковычки, да и по имени переменной удобнее определять её принадлежность к полю.

Может есть какая-то функция или что-то типа того?
  • Вопрос задан
  • 451 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 2
@D3lphi
Если я правильно вас понял, это относится не к php, а к sql:
INSERT INTO `table` (`column1`, `column3`) VALUES ('test', 'value')

При таком запросе столбец column1 получит значение 'test', а столбец column3 - значение 'value'. Конечно же, вместо прямого подставления значений нужно использовать плейсхолдеры:
INSERT INTO `table` (`column1`, `column3`) VALUES (?, ?)


А можно и так:
INSERT INTO `table` set `column1` = 'test', `column3` = 'value'
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Safemysql реализует данный функционал:
$db->query('insert into `messages` set ?u', $values);

причем делает это безопасно

при этом safemysql можно использовать параллельно с существующим кодом, просто передавая существующее подключение к mysqli в конструктор
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
gobananas
@gobananas
finishhim.ru
Так PDO с именованными или не именованными плейсхолдерами не то что вам нужно? Судя по примеру очень похоже на то что в nodejs
Ответ написан
heksen
@heksen
Такое в PDO есть.
Ответ написан
@dimentimor
Для простых запросов написал свои функции. Могу поделиться)

$q = insert_into( "users", [
	"name" => "Jack",
	"age"  => "22"
]);

// $q = INSERT INTO `users` (`name`, `age`) VALUES ('Jack', '22')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы