【问题标题】:Increment in UPDATE query not going over 4UPDATE 查询的增量不超过 4
【发布时间】:2013-09-24 10:47:40
【问题描述】:

我还有一个问题,我花了几个小时来理解和重写。在 UPDATE 查询中,我包含了 countr=countr+1。我成功地从移动应用程序接收到关键字,并且还能够将它们存储在数据库中。问题是,每当第五次传递相同的关键字时,就会创建一个新行。而不是将该关键字的计数加 1。就好像该国仅限于持有 4 号。

是因为我在 UPDATE 查询中犯了一个错误,还是因为我错过了其他事情?

这是我的代码:

$con= mysqli_connect("...","...","...") or die ('Error: ' . mysql_error()); 
mysqli_select_db($con,"...");
$sql= "SELECT keyWord FROM searchedWords";
$result= mysqli_query($con,$sql);
$row=mysqli_fetch_array($result, MYSQLI_ASSOC);

if($row['keyWord']==$_POST[keyWord])
{
  $upD="UPDATE searchedWords SET countr = countr + 1";
     while (!mysqli_query($con,$upD))
    {
     die('Error: ' . mysqli_error($con));
    }
}
else
{
   $insertIn="INSERT INTO `searchedWords`( `keyWord`, `countr`) values ('$_POST[keyWord]',1)";
 while (!mysqli_query($con,$insertIn))
    {
     die('Error: ' . mysqli_error($con));
    }
}

这是存储关键字和计数的表:

它只是不会超过 4。Android 应该有一个 9 和 Java 5 的计数。 你觉得我做错了什么?

【问题讨论】:

  • $upD="UPDATE searchedWords SET countr = countr + 1"; - 你不应该在这里有一个 where 子句吗?例如WHERE keyword = '".$row['keyWord']."'";否则,您将增加表中每个关键字的计数器(使用准备好的语句,因为您显然正在使用 MySQLi)
  • 我还会修剪 $_POST 值以删除任何无关的空格
  • 对 row['keyWord'] 和 $_POST['keyWord'] 执行 var_dump

标签: php mysql sql increment


【解决方案1】:
$_POST[keyWord] 

应该是

$_POST['keyWord']

【讨论】:

    【解决方案2】:

    您必须在更新查询中指定要更新的行,否则它将更新所有值...我可以看到另一个错误,但是

    我不确定此代码中的($row['keyWord']==$_POST[keyWord]) $_POST['keyword'] 关键字应该用引号引起来....希望对您有所帮助

    【讨论】:

    • 我会试着加上引号。谢谢。
    • 没有任何改变。
    • 但我仍然认为这个语句的问题在于 if($row['keyWord']==$_POST['keyWord]') 因为这里 $row['keyword'] 是一个数组它只匹配它的第一个值或不匹配 $_POST['keyword'] 的值......你可能需要使用 foreach 循环
    • $_POST['keyword'] 的值取决于我们的移动应用程序用户在在线公共访问目录中搜索的关键字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    相关资源
    最近更新 更多