0

您好,我的情况是,在特定日期,我的用户将能够更新数据,但只能将其更新限制为 3 次。到目前为止,这是我的代码。

if(date('m','d' == '04','01')){
     $sql="update tbl_enroll fields,fields,fields where student_id='".$_POST['student_id'] . "'";
     $pow = mysql_query($sql) or die (mysql_error());
}

关于如何限制他的更新的任何想法?我的数据库结构有什么需要改变的吗?将不胜感激任何帮助。

4

3 回答 3

4

在您的表中添加一个计数列,并在每次用户更新时递增。如果计数为 3,则不允许该操作并显示错误消息。

于 2012-09-09T13:31:49.133 回答
3

按照@TigOldBitties 的建议将计数列添加到表中,并在 WHERE 子句的末尾添加AND updateCount <= 3

——你确定if(date('m','d' == '04','01')){是正确的吗?我认为应该是if(date('m','d') == '04','01'){

- 甚至if(date('m','d') == '04','01'){不可能是正确的,你在这里想要做什么?

于 2012-09-09T13:37:29.133 回答
2

将“计数器”添加到 tbl_enroll。像这样的东西:

ALTER tbl_enroll ADD COLUMN counter SMALLINT UNSIGNED NOT NULL;

然后,您的代码应该是这样的:

// check how many times has this user edited:
$sql = 'SELECT counter FROM tbl_enroll WHERE student_id=123';
$pow = mysql_query($sql) or die (mysql_eror());
$pow = mysql_fetch_assoc($pow);

$allowed = true;
if ($pow['counter'] >= 3) $allowed = false;

if (date('m') == '04' && date('d') == '01' && $allowed) { // allow edit only on april 1
    $sql = "UPDATE tbl_enroll SET something='something',other_field='',counter=(counter+1) WHERE student_id=123"; // this is just an example, please focus on "counter=(counter+1)"
    $pow = mysql_query($sql) or die (mysql_error());
}
于 2012-09-09T13:40:03.287 回答