PDO在For循环中插入查询问题

时间:2014-08-10 17:41:05

标签: php mysql pdo foreach insert

我是PDO的新手,我在下面遇到了这个问题。基本上,我无法找到我的代码到底出了什么问题:我的foreach循环中的插入查询没有在我的数据库中插入任何内容。也许我没有以正确的方式编码。我需要我的客户回答动态表单,其中所有字段都使用mysql显示,我认为使用foreach循环会更方便。无论如何,事实证明这比我预期的要困难得多。这是我的代码......(评论和变量用葡萄牙语标记,如果你难以理解,请让我翻译它们)

编辑#1 - 根据你们的建议做了一些改变......仍然无法正常工作。

<?php
    if (isset($_POST["nome"])):
        try{
            // Começo da validação
            $pdo->beginTransaction();
            // Validação do campo nome
            if ($_POST["nome"] != null):
                $procurarnome=$pdo->prepare("SELECT id FROM users WHERE username=:username");
                $procurarnome->bindValue(":username",$name);
                $procurarnome->execute();
            else:
                die("Houve um erro no sistema, contate um administrador!");
            endif;
            // Validação dos campos dinâmicos
            foreach ($listarpergunta as $pergunta) {
                if ($_POST["pergunta$pergunta->id"] != null):
                    $resposta=addslashes($_POST["pergunta$pergunta->id"]);
                    $cadastraresposta=$pdo->prepare("INSERT INTO form_respostas(perguntaid,username,reposta)VALUES(:perguntaid,:username,:resposta)");
                    $cadastraresposta->bindValue(":perguntaid",$pergunta->id,PDO::PARAM_INT);
                    $cadastraresposta->bindValue(":username",$name);
                    $cadastraresposta->bindValue(":resposta",$resposta);
                    $cadastraresposta->execute();
                    echo $resposta;
                    echo "<br />";
                else:
                    $pdo->rollBack();
                    die("Preencha todos os campos corretamente!<br />");
                endif;
            }
            // Todos os arquivos foram preenchidos corretamente
            $pdo->commit();
            echo "Obrigado!";
        }
        catch(PDOException $pe){
             //$pdo->rollback();
             die($pe->getMessage());
        }
    else:
?>

当我点击提交表单时,我会收到&#34; Obrigado&#34;消息的事情,但db没有任何反应。如果我将任何字段留空,它将显示我&#34; Preencha todos os campos&#34; (所有字段都需要填写)所以我猜这个代码的特定部分并没有错...

1 个答案:

答案 0 :(得分:0)

您的代码中存在一些问题:

您的$listarpergunta变量已初始化的位置?

并更改您的查询:
    INSERT INTO form_respostas(perguntaid,username,reposta)VALUES(:perguntaid,:username,:resposta)

到:

INSERT INTO form_respostas(perguntaid,username,reposta) VALUES (:perguntaid,:username,:resposta)

(添加空格)