php вставить в таблицу mysql из объекта

avatar
Round-Sliced
8 апреля 2018 в 04:25
669
1
0

Пожалуйста, у меня есть таблица в массиве, который я хочу обновить с помощью объекта с соответствующей схемой в php. запрос:

REPLACE INTO entries ( mail, name, gender, age, ip, t, code, v, ansvers ) 
VALUES ( '$entry->mail', '$entry->name', '$entry->gender', '$entry->age', '$entry->ip', '$entry->t', '$entry->code', '$entry->v', '$entry->ansvers' )

Я хотел бы знать, есть ли простой способ указать переменные без необходимости создавать строку запроса с использованием цикла и извлечения ключей переменных объекта/массива или ввода всего вручную, как здесь. например, если я переименую $entry->mail в $entry->mail2, тогда запрос будет выполняться:

REPLACE INTO entries ( mail2 ) VALUES ( `$entry->mail2` )

при необходимости $entry можно изменить на любую структуру данных.

спасибо.

Источник
Vinay
8 апреля 2018 в 04:34
0

Используйте ORM, например RedBean

chris85
8 апреля 2018 в 04:45
0

Являются ли оба примера псевдокодом или реальными? Оба кажутся уязвимыми для SQL-инъекций, а VALUES ( `$entry->mail2` ) недопустимо.

Round-Sliced
8 апреля 2018 в 05:10
0

$entry создается заранее в php и выполняет проверки и экранирования. из-за количества безопасности и достоверности проверьте его в целом новом файле. первый пример - это реальный код, строка в запросе (""). второй - просто псевдокод, чтобы показать, что я имею в виду.

Ответы (1)

avatar
Nick
8 апреля 2018 в 05:33
1

Если действительно существует соответствие 1:1 от объекта к таблице, вы можете сделать это, чтобы сгенерировать запрос:

$query = "REPLACE INTO entries (" . 
   implode(',', array_keys(get_object_vars($entry))) .
   ") VALUES ('" . 
   implode("','", get_object_vars($entry)) .
   "')";
Round-Sliced
8 апреля 2018 в 05:44
0

Благодарю. я надеялся на какую-то автоматическую функцию, но это достаточно просто, и мне все равно нужно вернуть get_object_vars($entry) для других функций.