我试图在数据库中找到一个整数,然后根据该整数更新一组记录。提交表单时我没有收到任何错误,但数据库中的值保持为0,而不是找到的code_id
形式:
<form class="form-inline" method="POST" enctype="multipart/form-data>
<div class="form-group">
<label for="address">Have a Coupon Code?</label>
<input type="text" class="form-control" id="code" name="code" placeholder="Enter code here">
<input type="hidden" id="userid" name="userid" value="',$user_id,'">
<button class="btn btn-primary" type="submit" name="add_coupon" value="Apply Code">Apply Code</button>
</div>
</form>
if(isset($_POST['add_coupon']))
{
$user_id = $_POST['userid'];
$codeinput = $_POST['code'];
$code->apply_coupon($user_id, $codeinput);
header("location:basket.php?codeadded");
}
类功能:
public function apply_coupon($user_id, $codeinput)
{
try
{
$getcode = $this->db->prepare("SELECT code_id FROM codes WHERE name = :code LIMIT 1");
$getcode->bindparam(":code", $codeinput);
$getcode->execute();
$result = $getcode->fetchColumn(1);
$applycode = $this->db->prepare("UPDATE basket SET code_id = :result WHERE user_id = :user_id");
$applycode->bindparam(":user_id", $user_id);
$applycode->bindparam(":result", $result, PDO::PARAM_INT);
$applycode->execute();
return true;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
答案 0 :(得分:1)
PDOStatement::fetchColumn
使用zero-based index。您只询问了一个包含查询的列。
SELECT code_id FROM codes
但您实际上是通过询问1
$result = $getcode->fetchColumn(1);
该指数不存在。所以至少,你需要将其改为零。
$result = $getcode->fetchColumn(0);
或者甚至更好,我喜欢通过询问关联索引来明确。
$result = $getcode->fetch(PDO::FETCH_ASSOC)['code_id'];