我有一个像这样的表单:
<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']);