使用此mysql语句无法获得更新分数

时间:2013-11-08 02:19:20

标签: php mysql sql sql-update

我猜我只是有点生锈或什么东西,因为它似乎应该有效。我在这里错过了什么......

以下是我尝试使用的代码......

<?php 
echo dbConn();
$existing_time = mysql_result(mysql_query("SELECT p_time FROM scores WHERE p_uid=$uid"), 0);
$existing_category = mysql_result(mysql_query("SELECT p_cat FROM scores WHERE p_uid=$uid AND p_cat=$pieces"), 0);

if ($existing_category == "") {
mysql_query(
          "INSERT INTO scores VALUES (
          '',
          '$uid',
          '$pusername', 
          '$time',
          '$pieces'
          )");
} elseif ($existing_time <= $time) {
    echo "No Change!  Old Score Was Better (Lower)";
} elseif ($existing_time > $time) {
    mysql_query("UPDATE scores SET p_time = " . $time . " WHERE p_uid = " . $uid . " AND p_cat = " . $pieces . "");
};
?>

现在......这就是我想要做的......

我从用户名和类别匹配的数据库中收集信息。如果该用户的类别不存在,则会插入最新分数。 (这很有效。)

然后,如果该类别确实存在但旧分数更好,则它什么都不做。 (这部分也有效)......

然而,我似乎无法做的是让它更新最后得分,如果当前得分更好(得分较低,因为这是一个基于时间的游戏。)它不会更新得分。 / p>

我是这样尝试的:通过更新USERNAME和CATEGORY同时匹配的“得分”中的行。

请注意......在哪里说“碎片”。这是一个类别。在它说“时间”的地方,这是一个分数。分数将在00:00:00返回,持续数分钟和秒。

示例:(在括号中是数据库行名称)

  

id(ID)=只是按顺序排列的KEY id

     

用户ID(p_uid)= 123456789

     

用户名(p_username)= somename

     

得分(p_time)= 00:01:03

     

category(p_cat)= 10

1 个答案:

答案 0 :(得分:1)

将更新语句更改为:

mysql_query("UPDATE scores SET p_time = '" . $time . "' WHERE p_uid = " . $uid . " AND p_cat = " . $pieces . "");

您在$time附近的更新声明中错过了引号。