在我的表单中有两个输入如下:
<input type="text" class="form-control input-sm" name="topico[]"/>
<textarea rows="2" cols="46" maxlength="120" class="form-control input-sm" name="descricao[]"></textarea>
然后将其分配给类属性,如下所示:
if ($_POST) {
// seta propriedades do objeto
$topico->nome = $_POST['topico'];
$topico->descricao = $_POST['descricao'];
if (!empty($_POST['id'])) {
if ($topico->update()) {
echo "<div class=\"alert alert-success alert-dismissable\">";
echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>";
echo "Tópico atualizado com sucesso.";
echo "</div>";
} else {
echo "<div class=\"alert alert-danger alert-dismissable\">";
echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>";
echo "Erro ao atualizar tópico.";
echo "</div>";
}
}else {
if ($topico->create()) {
echo "<div class=\"alert alert-success alert-dismissable\">";
echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>";
echo "Tópico criado com sucesso.";
echo "</div>";
} else {
echo "<div class=\"alert alert-danger alert-dismissable\">";
echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>";
echo "Erro ao criar tópico.";
echo "</div>";
}
}
创建方法是我遇到的麻烦,因为我不知道如何将这些数据插入数据库。
public function create() {
$query = "INSERT INTO " . $this->table_name . " (nome, descricao) values (?, ?)";
$stmt = $this->conn->prepare($query);
$this->nome = htmlspecialchars(strip_tags($this->nome));
$this->descricao = htmlspecialchars(strip_tags($this->descricao));
$stmt->bindParam(1, $this->nome);
$stmt->bindParam(2, $this->descricao);
// execute statement
if ($stmt->execute()) {
return true;
} else {
return false;
}
}
据我所知,我必须使用 foreach 函数,我该怎么做?
最佳答案
我最终循环遍历 $_POST 并为每一行调用 $topico->create ,尽管这不是最好的方法,但它是我发现的唯一方法。
if ($_POST) {
foreach ($_POST['topico'] as $index => $row) {
$topico->nome = $_POST['topico'][$index];
$topico->descricao = $_POST['descricao'][$index];
$topico->id = $_POST['id'][$index];
if (!empty($_POST['id'])) {
if ($topico->update()) {
echo "<div class=\"alert alert-success alert-dismissable\">";
echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>";
echo "Tópico atualizado com sucesso.";
echo "</div>";
} else {
echo "<div class=\"alert alert-danger alert-dismissable\">";
echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>";
echo "Erro ao atualizar tópico.";
echo "</div>";
}
} else {
if ($topico->create()) {
echo "<div class=\"alert alert-success alert-dismissable\">";
echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>";
echo "Tópico criado com sucesso.";
echo "</div>";
} else {
echo "<div class=\"alert alert-danger alert-dismissable\">";
echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>";
echo "Erro ao criar tópico.";
echo "</div>";
}
}
}
}
关于php - 使用 PDO 将输入数组插入 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38355042/