我是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; (所有字段都需要填写)所以我猜这个代码的特定部分并没有错...
答案 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)
(添加空格)