Php 更新SQL查询未执行

Php 更新SQL查询未执行,php,mysql,Php,Mysql,我有一个系统,当用户使用优惠券时,一个“take”列将填充一个字符串,我运行is NULL来显示优惠券已消费。我的问题是我的update\u优惠券函数没有像我预期的那样更新列。第一次它工作了,但后来我肯定改变了一些东西,随后的查询不再工作了 对不起,我的问题是noob。谢谢你的帮助 功能是有效的优惠券($card\u code){ 全球$db; $code=sha1($card\U代码); $query='从礼品卡中选择*,其中卡片代码=:代码'; $statement=$db->prepare

我有一个系统,当用户使用优惠券时,一个“take”列将填充一个字符串,我运行
is NULL
来显示优惠券已消费。我的问题是我的
update\u优惠券
函数没有像我预期的那样更新列。第一次它工作了,但后来我肯定改变了一些东西,随后的查询不再工作了

对不起,我的问题是noob。谢谢你的帮助

功能是有效的优惠券($card\u code){
全球$db;
$code=sha1($card\U代码);
$query='从礼品卡中选择*,其中卡片代码=:代码';
$statement=$db->prepare($query);
$statement->bindValue(':code',$code);
$statement->execute();
$valid=($statement->rowCount()==1);
$statement->closeCursor();
返回$valid;
}
功能更新\u优惠券($card\u代码){
全球$db;
$code=sha1($card\U代码);
$query=”
更新“giftcards”`
设置为已使用
其中card_code=:card_code”;
$statement=$db->prepare($query);
$statement->bindValue(':card_code',$code);
$statement->execute();
$statement->closeCursor();
}
它们是这样执行的:

if($card_code){
if(优惠券有效吗(卡码)){
更新优惠券($card\u代码);
}
}

这一行导致了以下问题:

SET taken = used
您需要在使用前后加上撇号:

SET taken = 'used'

此线路导致以下问题:

SET taken = used
您需要在使用前后加上撇号:

SET taken = 'used'

“我一定改变了什么”-确切地说是什么?在
SET take=used
中,你的意思是将它设置为used的值吗?应该是
SET take='used'
加引号吗?你调用
是否有效\u优惠券()
,但在任何时候都不检查优惠券是否已经被使用过,所以在理论上你可以继续使用相同的优惠券-如果这很重要的话。如果使用或不使用,优惠券是否会返回布尔值?然后我用这个值来更新优惠券。我刚刚发现优惠券是否有效?优惠券返回false,我不明白为什么,因为优惠券应该在数据库“我必须更改了一些东西”中-具体是什么?在
SET take=used
中,您的意思是将其设置为used-的值,该值应该是
SET take='used'
加引号?您可以调用
是否有效\u优惠券(),所以在理论上你可以继续使用相同的优惠券-如果这很重要的话。如果使用或不使用,优惠券是否会返回布尔值?然后,我使用该值来更新优惠券。我刚刚发现优惠券是否有效?优惠券返回false,我不明白为什么,因为优惠券应该在数据库中,我尝试了此操作,但它仍然没有更新数据库。@user123传递给查询的卡代码是什么?$card\u code=strtoupper(substr(base\u convert(sha1(uniqid(mt_rand())、16、36、0、5)。“-”substr(base_convert(sha1(uniqid(mt_rand())、16、36、0、5)。“-”substr(base_convert(sha1(uniqid(mt_rand())、16、36、0、5));**这就是优惠券code@user123mt_rand()是随机的。如果将此值随机化,则会得到一个随机值。现在,由于您是根据此随机值进行过滤(由Mersenne Twister算法计算),很可能它与您存储的任何记录都不匹配,因此不会更新任何内容。您是否可以将实际拥有的值暂时硬编码到SQL中,以查看筛选器是否是唯一的问题?我尝试过,但它仍然没有更新数据库。@user123传递给que的卡代码是什么ry?$card_code=strtoupper(substr(基本转换)(sha1(uniqid(mt_rand()))、16、36、0、5)。'-'。substr(基本转换(sha1(uniqid(mt_rand()))、16、36、0、5).substr(base_convert(sha1(uniqid(mt_rand())),16,36,0,5));**这就是优惠券code@user123mt_rand()是随机的。如果将此值随机化,则会得到一个随机值。现在,由于您是按此随机值筛选的(由Mersenne Twister算法计算),它很可能与您存储的任何记录都不匹配,因此不会更新任何内容。您能否将实际拥有的值暂时硬编码到SQL中,以查看过滤器是否是唯一的问题?