【发布时间】: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