gpt4 book ai didi

php - 检查是否填充了 MySQL 行

转载 作者:行者123 更新时间:2023-11-29 07:10:35 24 4
gpt4 key购买 nike

我有一个写入 MySQL 表的页面。该表具有一定数量的行 (24)。

我有一个由 rand() 函数设置的 $id 变量。我基本上想拉那个 $id 处的行,所以如果 $id 是 3,我想拉第三行。然后,我想检查该行是否设置了价格(表示正在使用该行)。如果没有价格,我想将 $id 保持在它已设置的值并继续查询。如果有价格,我想重新随机化 $id 变量,并再次检查该行是否用完。当它找到一个空行时,继续查询。

我的解决方案半工作,但由于某种原因,它似乎有 <10% 的机会覆盖已使用的行。我希望它永远不会覆盖已使用的行。

这是我的代码:

    mysql_select_db("delives0_booklet", $con);

$query = "SELECT * FROM booklet WHERE id = '$id'";

$res = mysql_query($query,$con);

$newId = $id;

while($row = mysql_fetch_array($res))
{
if($row['price'] != 0)
{
do{
$newId = rand(1, 24);
}while($newId == $id);
}
}
$id = $newId;
mysql_query("UPDATE booklet SET price = '$price', advertiser = '$advertiser', image = '$image', monthsRemaining = '$monthsRemaining', availability = 1 WHERE id = '$id'");

编辑我有这样做的想法。我遍历表格并将每个未填充点的“id”放入数组中。然后我从那个数组中随机选择。然而,似乎有一个我找不到的错误,因为即使在循环运行之后,数组仍然显示为没有任何内容,并且 $i 是正确的数字。

        mysql_select_db("delives0_booklet", $con);

$query = "SELECT * FROM booklet";

$res = mysql_query($query,$con);
$i = 0;
$isEmpty = array();

while($row = mysql_fetch_array($res))
{

if($row['price'] == 0)
{
$isEmpty[i] = $row['id'];
$i = $i + 1;
}
}
echo $i . " unfilled spots.";
$n = 0;
while($n<$i)
{
echo $isEmpty[$n];
$n = $n + 1;
}
if($i > 0)
{
$id = $isEmpty[rand(0, $i)];
}
if($i == 0)
{
echo 'All spots have been filled.';
}

最佳答案

我认为这是一个顶级逻辑问题。因为您使用随机 ID 进行填充,所以您可以获得重复的 ID,因此当您更新“WHERE id = '$id'”时,您可能会选择已经填充的行。

我不知道您的目标,但也许使用自动递增 ID 并删除您想要删除的行是可行的方法。一组滚动的行(一次 24 个)但 ID 不断增加,可以防止将一个误认为另一个。

关于php - 检查是否填充了 MySQL 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4769068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com