Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中添加PHP变量,其中_Php_Sql - Fatal编程技术网

在SQL中添加PHP变量,其中

在SQL中添加PHP变量,其中,php,sql,Php,Sql,在我的第一个UPDATE语句中,我试图让我的WHERE值包含变量$couponCode,但它现在不起作用。这样,正确的行将根据输入内容进行更新。任何帮助都将不胜感激 if ($couponCode == $coupons_db3['coupon_code']){ echo $couponCode; $stmt = $db->prepare('UPDATE promocode_3 SET used = 1 WHERE coupon_code ='.$couponCode);

在我的第一个UPDATE语句中,我试图让我的WHERE值包含变量$couponCode,但它现在不起作用。这样,正确的行将根据输入内容进行更新。任何帮助都将不胜感激

if ($couponCode == $coupons_db3['coupon_code']){
   echo $couponCode;
   $stmt = $db->prepare('UPDATE promocode_3 SET used = 1 WHERE coupon_code ='.$couponCode);
   $stmt = $db->prepare('UPDATE usr_customer_profile SET packageid = 3 WHERE usrcustomerid = :usrcustomerid');
   $stmt->bindValue(':usrcustomerid', $_SESSION['usrcustomerid'], PDO::PARAM_INT);
   $stmt->execute();
   break;
 }
编辑

请忽略@比拉的回答更准确

试试这个:

$stmt = $db->prepare("UPDATE promocode_3 SET used = 1 WHERE coupon_code ='".$couponCode."'");
您错过了优惠券代码值中的报价。 另外,我不知道你在用哪个数据库。请下次再提

这应该是可行的,但对于准备好的语句来说,这不是一个理想的情况,因为对于准备好的语句,您应该只在执行时给出参数


“prepare”应该只编译sql语句,稍后应该传递参数。

您还需要绑定
couponCode

if ($couponCode == $coupons_db3['coupon_code']){
       echo $couponCode;
       $stmt = $db->prepare('UPDATE promocode_3 SET used = 1 WHERE coupon_code =:couponCode');
       $stmt->bindValue(':couponCode', $couponCode, PDO::PARAM_STR);
       $stmt->execute();

       $stmt = $db->prepare('UPDATE usr_customer_profile SET packageid = 3 WHERE usrcustomerid = :usrcustomerid');
       $stmt->bindValue(':usrcustomerid', $_SESSION['usrcustomerid'], PDO::PARAM_INT);
       $stmt->execute();
       break;
     }

准备、绑定(即
WHERE优惠券代码=:couponCode
)并以与第二个查询相同的方式执行第一个查询。我想看一个这样的例子,我已经将行变成:“$stmt=$db->Prepare('updatepromocode\u 3 SET used=1 WHERE优惠券代码=:couponCode);”那么您是否正在绑定
$couponCode
?执行准备好的语句怎么样?我不会假设
$couponCode
是一个整数。我是说,可能是,但OP还没有确认,所以我只使用nowLet的默认绑定类型让他设置:)我们只是帮助他解决编码问题,因为单引号在更新中没有关闭,或者是其他原因?抱歉,忘了提到它是字符串varchari,我必须确保参数和两者都需要它们的单独执行()。谢谢,这就成功了。