php - 使用 PDO 将输入数组插入 mysql

标签 php mysql pdo

在我的表单中有两个输入如下:

<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\">&times;</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\">&times;</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\">&times;</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\">&times;</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\">&times;</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\">&times;</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\">&times;</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\">&times;</button>";
            echo "Erro ao criar tópico.";
            echo "</div>";
        }
    }
}

}

关于php - 使用 PDO 将输入数组插入 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38355042/

相关文章:

php - Magento 管理页面完全空白,任何地方都找不到错误

php - wordpress 如何将 X-FRAME 限制为同源?

php - 这是使用 PHP 更新/插入记录的正确方法吗?

php 或浏览器无法识别 PDO 中的 "->"

php - 用户名和密码错误处理

php - 为什么不使用以下代码将值插入数据库?

php - 将时间戳添加到数据库表

android - 如何为使用 MySQL 数据库的 Android 应用程序创建 REST 服务?

php - Yii2 调试 mysql 查询或 mysql_error 等效项

php - 对 MySQL 查询的 PHP 结果进行“分组”