0

我有一个包含以下值的表:

Table
-----------------------------------------------------------
Column               | Type           | Default
-----------------------------------------------------------
name                   varchar(100)     none
loginCount             int(11)          0
lastLoginDate          datetime         0000-00-00 00:00:00
-----------------------------------------------------------

现在,我想检查用户是否正确登录,如果是,则loginCount相应地更新lastLoginDate

php脚本如下:

<?php
  // Verification query..
  if($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    $sql = "UPDATE table
               SET `loginCount` = `loginCount` + 1,
                   `lastLoginDate` = now()
             WHERE `name` = '".$username"'";
    $result = mysql_query($sql);
  }
?>

问题是,这不起作用!

但是,如果我通过直接登录mysql控制台来使用相同的内容,则会发生更新!

你能告诉我我在这里做错了什么吗?

谢谢!

4

1 回答 1

2

你在.结束引号之前缺少一个 for 连接

WHERE `name` = '".$username"'";
//------------------------^^^

应该

WHERE `name` = '".$username . "'";
//--------------------------^^^

或者更好的是,省略连接,因为你用双引号括起来。

$sql = "UPDATE `table` SET ..... WHERE `name` = '$username'";

这意味着您可能没有启用 error_reporting,或者您会看到语法错误。

就像是:

解析错误:语法错误,意外 '"'"' (T_CONSTANT_ENCAPSED_STRING)...

ini_set('display_errors', 1);
error_reporting(E_ALL);

最后,它不应该引起问题,根据发布的代码我不会期望,但是重用是不明智的$result,这是您第一次(在这里看不到)查询的结果资源变量。TRUE/FALSE如果需要,一旦它被UPDATE语句覆盖,您将无法再次从中获取。UPDATE为成功/失败使用不同的变量。

$other_var_not_result_for_clarity = mysql_query($sql);
于 2013-02-15T03:05:13.220 回答