我有一个简单的表单,我用它来提交一个新的列表项。表单不提交到数据库PHP PDO
HTML表单
<form class="form-horizontal" action="" method="post">
<fieldset>
<!-- List Desription-->
<div class="form-group">
<label class="col-md-4 control-label" for="listDescription"></label>
<div class="col-md-4">
<div class="input-group">
<span class="input-group-addon">Title/Description</span>
<input id="titleDescription" name="titleDescription" class="form-control" placeholder="Title/Descriptiopn" type="text" required="">
</div>
</div>
</div>
<!-- List Status -->
<div class="form-group">
<label class="col-md-4 control-label" for="listStatus"></label>
<div class="col-md-4">
<select id="listStatus" name="listStatus" class="form-control">
<option value="1">In Progress</option>
<option value="2">On Hold</option>
<option value="3">Complete</option>
</select>
</div>
</div>
<!-- Submit Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="btnAddList"></label>
<div class="col-md-4">
<input type="submit" id="submit" name="submit" class="btn btn-info" value="Create List">
</div>
</div>
</fieldset>
</form>
的形式提交到以下PHP在同一页上:
形式提交PHP
if(isset($_POST['submit'])) {
$listDescription = (isset($_POST['listDescription'])) ? $_POST['listDescription'] : '';
$listStatus = (isset($_POST['listStatus'])) ? $_POST['listStatus'] : '';
$createdDate = date('Y-m-d');
$query = $pdo->prepare("INSERT into lists ('createdDate', 'listDescription', 'listStatus') VALUES (:createdDate, :listDescription, :listStatus)");
$query->bindParam(':listDescription', $listDescription, PDO::PARAM_STR);
$query->bindParam(':listStatus', $listStatus,PDO::PARAM_STR);
$query->bindParam(':createdDate', $createdDate, PDO::PARAM_STR);
$query->execute();
}
的形式没有实际得到的数据进入MySQL数据库。我有它显示为$ _ POST的增值经销商:从$ _POST输出
阵列:从$ _ POST
var_dump($_POST)
这
倾销阵列实际显示我的表单数据
array(3) { ["titleDescription"]=> string(5) "Title" ["listStatus"]=> string(1) "1" ["submit"]=> string(11) "Create List" }
我不能为我的生活看到为什么这不是提交给数据库。我也想将其包装在一个try
和捕捉异常,如果有的话,但是当我这样做,我得到其他错误,例如,expected statement right before the
抓. This is how I had it written with the
try`:
PHP代码与“尝试”包括
try {
if(isset($_POST['submit'])) {
$listDescription = (isset($_POST['listDescription'])) ? $_POST['listDescription'] : '';
$listStatus = (isset($_POST['listStatus'])) ? $_POST['listStatus'] : '';
$createdDate = date('Y-m-d');
$query = $pdo->prepare("INSERT into lists ('createdDate', 'listDescription', 'listStatus') VALUES (:createdDate, :listDescription, :listStatus)");
$query->bindParam(':listDescription', $listDescription, PDO::PARAM_STR);
$query->bindParam(':listStatus', $listStatus,PDO::PARAM_STR);
$query->bindParam(':createdDate', $createdDate, PDO::PARAM_STR);
$query->execute();
} catch (PDOException $e) {
echo "Error";
}
}
正如我所提到的,但是当我包含try
时,我基本上得到了语法错误。我相信我错过了一些愚蠢的事情。
UPDATE
我得到它的工作。敲我的头靠在桌子和不理解为什么它不是工作之后,我几乎开始与最基本的形式,我可以创造和扩大从那里:
try{
if(isset($_POST['newItem'])) {
$createdOn = date("Y-m-d H:i:s");
$listTitle = $_POST['listTitle'];
$createdBy = $_SESSION['user_id'];
$listStatus = $_POST['listStatus'];
$insert = $pdo->prepare("INSERT INTO userlists (createdOn, listTitle, createdBy, listStatus) VALUES(:createdOn, :listTitle, :createdBy, :listStatus)");
$insert->bindParam(':createdOn', $createdOn);
$insert->bindParam(':listTitle',$listTitle);
$insert->bindParam(':createdBy',$_SESSION['user_id']);
$insert->bindParam(':listStatus',$listStatus);
$insert->execute();
echo "insert it";
}
} catch(PDOException $e) {
echo "error:".$e->getMessage();
}
所以这个执行以下操作:
- 提交一个新的列表项
- 提交新的列表项的数据库
- 提交当前USER_ID即会话标识符数据库
在我的页面的下方,我的PHP显示属于具有匹配user_id的用户的所有列表项。
利润!
您的catch块在if语句的右括号之后。仔细看看括号属于什么。 – Qirel
也请按照此https://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks-in-mysql。不知道它是否是重复的,但非常接近 –
看来你的参数值是不同的,1是titleDescription和另一个是listDescription:name =“titleDescription”和$ _POST ['listDescription'] –