将查询中的字符串转换为另一个查询的整数
Turn string from query into integer for another query
基本上,我有一个从数据库中获取数字的查询,然后我需要获取该数字,将其转换为整数以便我可以将其加 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?我只是在尝试。
在这里,最好这样做:
mysqli_query($mysqli, "UPDATE savage SET `likes`=`likes`+1 WHERE `id`='$id'");
如果您读取 PHP 中的值,然后加一,然后保存,您可能会导致数据不同步。
想象一下,两个人同时点击了这个页面。如果他们真的按顺序出现,你会得到:
Person A: The db reads as 1. You add 1 and save. Value will now be 2.
Person B: The db reads as 2. You add 1 and save. Value will now be 3.
但可能会发生每个人大约同时读取数据库的情况:
Person A: The db reads as 1. You add 1 and save. Value will now be 2.
Person B: The db reads as 1. You add 1 and save. Value will now be 2.
换句话说,您可以递增陈旧值并进行保存。如果您在一个 SQL 语句中完成所有操作,您就不会遇到此问题。
基本上,我有一个从数据库中获取数字的查询,然后我需要获取该数字,将其转换为整数以便我可以将其加 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?我只是在尝试。
在这里,最好这样做:
mysqli_query($mysqli, "UPDATE savage SET `likes`=`likes`+1 WHERE `id`='$id'");
如果您读取 PHP 中的值,然后加一,然后保存,您可能会导致数据不同步。
想象一下,两个人同时点击了这个页面。如果他们真的按顺序出现,你会得到:
Person A: The db reads as 1. You add 1 and save. Value will now be 2.
Person B: The db reads as 2. You add 1 and save. Value will now be 3.
但可能会发生每个人大约同时读取数据库的情况:
Person A: The db reads as 1. You add 1 and save. Value will now be 2.
Person B: The db reads as 1. You add 1 and save. Value will now be 2.
换句话说,您可以递增陈旧值并进行保存。如果您在一个 SQL 语句中完成所有操作,您就不会遇到此问题。