将查询中的字符串转换为另一个查询的整数

时间:2015-01-15 23:16:27

标签: php mysqli integer

基本上,我有一个从数据库中获取数字的查询,然后我需要取数字,把它变成一个整数,这样我就可以加1,然后再次查询它来更新数据库。

基本上,我希望每次有人点击它时都会更新数据库编号为+ 1。

代码:

$id = $_POST['id'];
$curr = mysqli_query($mysqli, "SELECT `likes` FROM savage WHERE `id` = '$id'");
$curr2 = intval($curr) + 1;
mysqli_query($mysqli, "UPDATE savage SET `likes`='$curr2' WHERE `id`='$id'");

我试图使用intval?我只是在尝试。

1 个答案:

答案 0 :(得分:0)

在这里,最好这样做:

mysqli_query($mysqli, "UPDATE savage SET `likes`=`likes`+1 WHERE `id`='$id'");

如果您在PHP中读取值,然后添加一个,然后保存,则可能导致数据不同步。

想象一下,有两个人同时点击此页面。如果它们确实按顺序排列,你会得到:

  

人A:数据库读为1.您添加1并保存。现在价值为2。

     

人B:数据库读为2.你加1并保存。价值现在是3。

但是可能会发生每个人几乎同时读取db:

  

人A:数据库读为1.您添加1并保存。现在价值为2。

     

人B:数据库读为1.您添加1并保存。现在价值为2。

换句话说,您可以增加陈旧值并保存。如果你在一个SQL语句中完成所有操作,则不会出现此问题。