我创建了一个表单,我希望将cat
的输入值存储到我的SQL数据库中。这是我的PHP代码:
<?php
$cat = $_POST['cat'];
if ( !empty($_POST)) {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE orders set cat = ? WHERE id = '$id'";
$q = $pdo->prepare($sql);
$q->execute(array($cat));
Database::disconnect();
}
?>
这是我的表格:
<form action="index.php" method="post">
<div id="modal-content" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h3><?php echo $id ?></h3>
</div>
<div class="modal-body">
<p>
<input type="text" name="cat" />
</p>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Save</button>
</div>
</div>
</div>
</div>
</form>
有人知道为什么这不起作用吗?没有数据存储到数据库中。数据库连接正常。谢谢
****更新:
我发现了自己的错误。结果如下:
<?php
$cat = $_POST['cat'];
$id = $_POST['id'];
if ( !empty($_POST)) {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE orders set cat = ? WHERE id = '$id'";
$q = $pdo->prepare($sql);
$q->execute(array($cat));
Database::disconnect();
}
?>
表格
<form action="index.php" method="post">
<div id="modal-content" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h3><?php echo $id ?></h3>
</div>
<div class="modal-body">
<p>
<input type="text" name="cat" />
<input type="hidden" name="id" value="1"/>
</p>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Save</button>
</div>
</div>
</div>
</div>
</form>
答案 0 :(得分:1)
正如评论中已经提到的,您有一个未定义的$id
。
$cat = $_POST['cat'];
if ( !empty($_POST)) {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE orders set cat = ? WHERE id = '$id'";
$q = $pdo->prepare($sql);
$q->execute(array($cat));
Database::disconnect();
}
?>
相反,你应该:
在您的HTML中:
<input type="hidden" name="check"/>
然后在你的PHP中:
if(isset($_POST['check'])){
$cat = $_POST['cat'];
$id = $_POST['id'];
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE orders set cat = ? WHERE id = '$id'";
$q = $pdo->prepare($sql);
$q->execute(array($cat));
Database::disconnect();
}
?>
答案 1 :(得分:0)
cat
已经是数据库中的列吗?
如果不是,你需要制作一个。否则你无法使用更新。
答案 2 :(得分:0)
您没有进行任何错误检查。试试这个:
if ( ! $q->execute(array($cat))) {
echo "ERROR: ".$pdo->errorInfo();
}
那会告诉你什么是错的。