У меня есть клиентское приложение, написанное на С#, из которого мне нужно вставить информацию, используя интерфейс api. Я пытаюсь сделать это api, но я действительно новичок в веб-разработке. Из того, что я понимаю, мне нужно сделать POST (для лучшей безопасности) x-www-form-urlencoded
запрос к моему веб-скрипту api. У меня есть такие параметры:
client_id=1234&client_version=4&data_key[0]=encryptionkey1&data_selenium_browser[0]=firefox46&data_driver_path[0]=c:\user\appdata\client\drivers\s_driver1.exe&data_key[1]=encryptionkey2&data_selenium_browser[1]&data_driver_path[1]=c:\user\appdata\client\drivers\s_driver2.exe
Могут быть любые данные data_key
и data_selenium_browser
и data_driver_path
.
Поэтому я разбираю все эти параметры, и теперь мне нужно вставить массив data_key
и data_selenium_browser
и data_driver_path
для каждого идентификатора пользователя.
У меня есть вопрос, что было бы лучшим способом передать массив параметров и как я могу его хранить внутри mysql? В настоящее время из того, что я думал, я могу сделать отдельную таблицу следующим образом:
CREATE TABLE clients_data (
client_id int ,
data_key varchar(32),
data_selenium_browser varchar(32),
data_driver_path TEXT
);
Таким образом, client_id не уникален, я предполагаю, что я должен вставить несколько записей для каждого пользователя с этими параметрами и сделать LEFT JOIN
или что-то в этом роде, чтобы выбрать все эти столбцы при отображении информации пользователя?
Используйте цикл foreach
. Здесь, как это сделать, используя подготовленный отчет PDO.
$update_stmt = $conn->prepare("
INSERT INTO clients_data (client_id, data_key, data_selenium_browser, data_driver_path)
VALUES (:id, :key, :browser, :path)");
$update_stmt->bindParam(":id", $id);
$update_stmt->bindParam(":key", $key);
$update_stmt->bindParam(":browser", $browser);
$update_stmt->bindParam(":path", $path);
$id = $_GET['client_id'];
foreach ($_GET['data_key'] AS $index => $key) {
$browser = $_GET['data_selenium_browser'][$index];
$path = $_GET['data_driver_path'][$index];
$update_stmt->execute();
}