PHP 通过 SELECT 设置变量,如果变量 <3 做某事,+1,则更新数据库


PHP set variable via SELECT, if variable <3 do something, +1, then UPDATE database

在我的数据库中,我有 1 个名为"members"的表。此表只有两个字段:"id"和"尝试次数"。只有一行,"id"设置为 1,"尝试次数"设置为 0。

每当运行此脚本时,我都想在表的"尝试次数"中添加 1。运行一次后,"尝试"应为 1,两次应为 2,依此类推。

我想将变量$attempts设置为表的"尝试"设置的任何内容。

如果$attempts值为 3 或更多,我希望它回显"某物",然后将表的"尝试"值更改为 0。

这是我已经拥有的,我该怎么做?我是 php 的新手,正在浏览手册。任何提示或帮助表示赞赏。谢谢大家:)

$attempts = mysql_query("SELECT attempts FROM members WHERE id=1");
if (++$attempts >= 3) {
    echo "SUCCESS!!";
    $attempts = 0;
}else {
    echo "3 attempts haven't been made yet...";
}
$sql = "UPDATE members SET attempts='$attempts' WHERE id=1";

WHERE子句添加一个条件并更改条件语句:

旁注:这当然是看到"尝试"列是 int 类型。

$attempts = mysql_query("SELECT attempts FROM members WHERE id=1 AND attempts >=3");
if($attempts) {
   echo "SUCCESS!!";
$attempts = 0;
}

else {
    echo "3 attempts haven't been made yet...";
}
$sql = mysql_query("UPDATE members SET attempts='$attempts' WHERE id=1");

旁注:您可能希望将 UPDATE 放在else{...}
SET attempts = attempts +1将其增加 1
或重置为零SET attempts='$attempts'


  • 我建议将mysqli与准备好的语句一起使用,或者将PDO与准备好的语句一起使用,它们更安全

  • 另外,您使用的是已弃用的MySQL API。


编辑:

正如OP所述(来自评论):

上面的答案不起作用,因为mysql_query会导致$attempts回显资源 ID #3,而不是实际的表值。

但是,您可以改用mysql_fetch_assoc来解决此问题。

您需要添加的所有内容都在这里:链接 我已经包含了下面的工作代码,并选择了它作为答案,因为它让我走上了正确的轨道。

非常感谢弗雷德帮助我。

$sql = "SELECT attempts FROM members WHERE id=1"; 
$result = mysql_query($sql); 
    while ($row = mysql_fetch_assoc($result)) { 
$attempts = $row["attempts"];
}

等。。


编辑#2,测试

它检查"尝试"行是否超过 3。如果是,则将其重置为 0。

如果不是,它将与"id"相关的行增加 1。

<?php 
$DB_HOST = 'xxx';
$DB_USER = 'xxx';
$DB_PASS = 'xxx';
$DB_NAME = 'xxx';
$Link = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($Link->connect_errno > 0) {
  die('Connection failed [' . $Link->connect_error . ']');
}
$query = mysqli_query($Link, "SELECT attempts FROM members WHERE id=1");
while ($row = mysqli_fetch_assoc($query)) {
if($row['attempts'] >=3) {
   echo "SUCCESS!!";
 $attempts = 0;
 $sql = mysqli_query($Link, "UPDATE members SET attempts='$attempts' WHERE id=1");
}
else {
    echo "More than 3 attempts haven't been made yet..., row has been incremented by 1.";
 $sql = mysqli_query($Link, "UPDATE members SET attempts= attempts +1 WHERE id=1");
    }
} // brace for while loop