我的数据库更新确实存在问题:我需要使用$ _post格式的数据更新数据库,但不会更新。
if(isset($_POST["submit"]))
{
$query = "SELECT COUNT(*) AS count FROM newsletter WHERE client = ? AND email = ?";
$sql = $dbp->prepare($query);
$sql->execute(array($_POST["client"], $_POST["email"]));
$count = $sql->fetch(PDO::FETCH_ASSOC);
if($count["count"] == "0")
{
$query = "UPDATE newsletter SET tip = 'subscriber' WHERE client = ? AND email = ?";
$sql = $dbp->prepare($query);
$sql->execute(array($_POST["client"], $_POST["email"]));
}
echo '<h4>congrats! '.$_POST["email"].'</h4>';
exit;
}
以及$ _POST数据形式的代码。
<form method="post" action="?">
<div>
<div style="display:inline-block;margin-bottom:20px;"><input type="checkbox" name="submit" value="Confirm" required> <span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size:12px;">confirm</span></div>
<div style="display:inline-block;"><input type="submit" name="submit" value="Confirm"/></div>
</div>
<input type="hidden" name="email" value="<?php echo $_GET["email"]; ?>" />
<input type="hidden" name="client" value="<?php echo $_GET["client"]; ?>" />
</form>
答案 0 :(得分:0)
您的问题出在这里的逻辑执行中:
if($count["count"] == "0")
{
$query = "UPDATE newsletter SET tip = 'subscriber' WHERE client = ? AND email = ?";
如果计数为0,则没有行要更新。当计数为0时,您需要插入。如果要更新,则需要一行来更新。