В настоящее время я пытаюсь решить небольшую проблему с подготовленными заявлениями MySQLi. Я пытаюсь написать пользовательскую функцию PHP, которая принимает несколько переменных и использует их для записи некоторых данных в таблицу в моей базе данных с помощью подготовленного оператора.
Проблема в том, что мне нужна функция для принятия любого количества параметров.
Пример функции в действии:
db_insert_secure("Goals", "(Name, Description, Type, ProjectID)", $data);
Предполагается, что вся информация, хранящаяся в массиве $ data, будет записана в (4) строки, указанные в таблице Goals.
Однако, поскольку количество параметров может измениться, я не могу придумать способ их эффективного связывания.
У меня была одна идея - использовать оператор switch, который обрабатывал бы привязку разного числа параметров, но я уверен, что это не самый красноречивый или эффективный метод.
Сценарий полностью:
function db_insert_secure($table, $columns, $data)
{
$link = db_connect();
$inputData = explode(",", $columns);
$query = "INSERT INTO ".$table." ".$columns." VALUES (";
for ($i = 0; $i < sizeof($inputData); $i ++)
{
$query .= "?";
if ($i != sizeof($inputData) - 1)
{
$query .= ", ";
}
}
$query .= ")";
echo $query;
$check_statement = mysqli_prepare($link, $query);
//mysqli_stmt_bind_param($check_statement, 's', $data[0]);
echo $check_statement;
db_disconnect($link);
}
ПРИМЕЧАНИЕ. Сценарии db_connect и db_disconnect - это пользовательские сценарии для открытия и закрытия соединения с базой данных. db_connect просто возвращает объект подключения.
Может кто-нибудь придумать решение этой проблемы, которое не предполагает использование eval?