如何插入未知数量的字段作为行与PHP PDO


How to insert an unknown number of fields as rows with PHP PDO

我有一个像这样的表单:

<form>
<textarea name="text1"></textarea>
<textarea name="text2"></textarea>
<textarea name="text3"></textarea>
</form>

然而,文本区域的数量是动态确定的,所以不会总是只有3个。

我想用PDO将每个textarea的$_POST插入到不同的行中。如果它们都在同一行,我就使用这个:

$query = $db->prepare("INSERT INTO responses (text1, text2, text3) VALUES (:text1, :text2, :text3)");
$query->bindValue('text1', $_POST['text1'], PDO::PARAM_STR);
$query->bindValue('text2', $_POST['text2'], PDO::PARAM_STR);
$query->bindValue('text3', $_POST['text3'], PDO::PARAM_STR);
$query->execute();

虽然文本区域数量变化的问题也没有解决…我正在考虑使用count($_POST)和迭代for循环?

我怎么能去插入一个未知数量的字段到自己的行与PDO?

修改你的HTML以数组形式发送:

<textarea name="text[]"></textarea>
<textarea name="text[]"></textarea>
<textarea name="text[]"></textarea>

然后你可以循环数组$_POST['text']

你甚至可以这样写:

$params = array_fill(0, count($_POST['text']), '(?)');
$db->prepare("INSERT INTO responses (text) VALUES " . implode(", ", $params));
$query->execute($_POST['text']);