gpt4 book ai didi

PHP 更新 MySQL 数据库表

转载 作者:行者123 更新时间:2023-11-29 07:00:21 25 4
gpt4 key购买 nike

首先,我只是想说我是这类编码的新手,尽管我希望我最终能在一些指导下理解这一切。

我有一个 MySQL 数据库表(促销),它存储了各种产品的一堆兑换代码(用于赠品竞赛)。这个想法是,第一个输入兑换码的人赢得了产品,他们的信息应该存储在“促销”表中。

该表的列是:redeem_id(自动递增字段)、redeem_code、redeer_email、redeer_first_name、redeer_last_name 和 redeem_date_time。

最初,redeem_id 和 redeem_code 字段是唯一具有任何数据的字段。我想要发生的是,当用户输入他们的信息(姓名、电子邮件等)并提交兑换代码时,他们的信息将填充该特定代码行的其余部分。如果其他任何人尝试提交已兑换的代码,他们应该会收到一条错误消息 - 对于无效代码(即表中不存在的代码)也是如此。

我目前的 PHP 代码是:

<?php
function get_promotion_by_redeem_code($redeem_code)
{
$sql = "SELECT * FROM promotion WHERE redeem_code= '".mysql_real_escape_string($redeem_code)."'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);

return $row;
}

function redeem_promotion($email,$first_name,$last_name,$redeem_date_time,$redeem_code)
{
$query = 'UPDATE promotion
SET redeemer_email=".mysql_real_escape_string($email).", redeemer_first_name=".mysql_real_escape_string($first_name).", redeemer_last_name=".mysql_real_escape_string($last_name).", redeem_date_time=NOW(), WHERE redeem_code=".mysql_real_escape_string($redeem_code)."';
$insert = mysql_query($query);
return $insert;
}

$email=$_POST['e_mail'];
$first_name=$_POST['f_name'];
$last_name=$_POST['l_name'];
$redeem_code=$_POST['v_code'];

$connection = mysql_connect('localhost', 'db', 'pw');
mysql_select_db('db', $connection);

$promotion = get_promotion_by_redeem_code($redeem_code);

if ($promotion) {
if (!$promotion['redeemer_email']) {
redeem_promotion($email,$first_name,$last_name,$redeem_date_time,$redeem_code);
echo 'Congratulations, you have successfully claimed this item!';
} else {
echo 'Sorry, this item has already been redeemed.';
}
} else {
echo 'Sorry, you have entered an incorrect claim code. Please use your browser\'s back button to try again.';
}

mysql_close($connection);
?>

当我输入无效的 claim 代码时,或者如果代码的行之前已填充,它会按预期工作。当它不起作用时,就是有人第一次去兑换该元素的时候。本质上,它会显示“祝贺”消息,但是表格不会针对提交的信息进行更新。因此,无论输入多少次正确的代码,用户都会收到“恭喜”消息。

我相当确定错误出在 redeem_promotion() 函数中,但我不知道错误出在哪里。

最佳答案

您在WHERE 子句之前添加了一个额外的逗号(,)。我认为那是个错误。

function redeem_promotion($email,$first_name,$last_name,$redeem_date_time,$redeem_code)
{
$query = 'UPDATE promotion
SET redeemer_email=".mysql_real_escape_string($email).",
redeemer_first_name=".mysql_real_escape_string($first_name).",
redeemer_last_name=".mysql_real_escape_string($last_name).",
redeem_date_time=NOW()
WHERE redeem_code=".mysql_real_escape_string($redeem_code)."';

**OR**

$query = "UPDATE promotion
SET redeemer_email='".mysql_real_escape_string($email)."',
redeemer_first_name='".mysql_real_escape_string($first_name)."',
redeemer_last_name='".mysql_real_escape_string($last_name)."',
redeem_date_time=NOW()
WHERE redeem_code='".mysql_real_escape_string($redeem_code)."'";

$insert = mysql_query($query);
return $insert;
}

关于PHP 更新 MySQL 数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10520810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com