最简单的解决方案是从您的 $_POST 数据中检索表单字段。
假设您的$_POST 数据具有以下结构。
Array
(
[name_en] => name_en
[name_ru] => name_ru
[name_fr] => name_fr
[description_en] => description_en
[description_ru] => description_ru
[description_fr] => description_fr
)
然后您可以使用您的 $language_array 迭代并提取关联的 $_POST 表单字段值,如下所示:$_POST['fieldname_' . $lang]
$languages = ['en', 'fr', 'ru'];
$sql = 'INSERT INTO `table_name` (`Name`, `Description`, `Language`) VALUES (?, ?, ?)';
if ($stmt = mysqli_prepare($conn, $sql)) {
mysqli_stmt_bind_param($stmt, 'sss', $name, $description, $language);
foreach ($languages as $lang) {
$name = array_key_exists('name_' . $lang, $_POST) ? $_POST['name_' . $lang] : null;
$description = array_key_exists('description_' . $lang, $_POST) ? $_POST['description_' . $lang] : null;
$language = strtoupper($lang);
mysqli_stmt_execute($stmt);
}
}
有关mysqli的详细信息以及prepared statements的用法,请参阅
PHP
documentation。
另一种解决方案是创建一个您希望向用户显示的表单字段列表。
$fields = ['name' => 'Name', 'description' => 'Description'];
$languages = ['en', 'ru', 'fr'];
然后您可以遍历每个字段和语言以在浏览器中呈现它们。
请注意,输入字段名称以相关语言为前缀
作为字段数组,例如LANG[field]
foreach ($fields as $fieldName => $section) {
echo '<fieldset>';
echo '<legend>' . $section. '</legend>';
foreach ($languages as $language) {
$inputName = strtoupper($language) . '[' . $fieldName . ']';
$placeholder = $fieldName . '_' . $language;
echo '<p>';
echo '<label>';
echo '<input type="text" name="' . $inputName . '" placeholder="' . $placeholder . '"/>';
echo '</label>';
echo '</p>';
}
echo '</fieldset>';
}
结果形式:
您的$_POST 数据将具有以下结构
Array
(
[EN] => Array
(
[name] => name_en
[description] => description_en
)
[RU] => Array
(
[name] => name_ru
[description] => description_ru
)
[FR] => Array
(
[name] => name_fr
[description] => description_fr
)
)
这将允许您通过迭代 $_POST 表单值来为每种语言插入单独的条目,作为语言相关表单字段的数组。
$sql = 'INSERT INTO `table_name` (`Name`, `Description`, `Language`) VALUES (?, ?, ?)';
if ($stmt = mysqli_prepare($conn, $sql)) {
mysqli_stmt_bind_param($stmt, 'sss', $name, $description, $language);
foreach ($_POST as $language => $fields) {
$name = array_key_exists('name', $fields) ? $fields['name'] : null;
$description = array_key_exists('description', $fields) ? $fields['description'] : null;
mysqli_stmt_execute($stmt);
}
}
免责声明:由于几乎没有提供关于 parent 表的相关内容或其关联的信息,因此我的回答将其排除在外。我认为 OP 将能够确定如何操纵答案以满足将父级添加到查询中。