我正在创建一个简单的彩票脚本。
这个想法是,在一张彩票中可能会有几个中奖者,而我在检查新的中奖者是否是已经在该彩票中中奖的人时遇到了麻烦。
我将这种数据存储在数据库中。
list [长文本] - 包含参赛者列表的列(用空格或逗号分隔) 获胜者 [长文本] - 包含此彩票中奖者列表的列(用空格分隔)
我的循环:
//$won_this is person who won in this round
$old_winners = $draw[winner];
$czy = strpos($old_winners, "$won_this");
while($czy == FALSE)
{
$add_winner = $won_this;
}
$sql = "update `draws` set `winner`= concat(winner, ' $add_winner') where code='$draw['number']'";
mysql_query($sql) or die(mysql_error());
我的循环不起作用。它将永远循环或根本不循环。我不知道如何写这个。
如何创建一个循环,该循环在重复获胜者时运行并一直工作,直到找到新的获胜者?
最佳答案
我要做的第一件事是将旧的获胜者转换为数组:
$winners = explode(' ', $draw['winner']);
然后我会将新的获胜者添加到数组中:
$winners[] = $won_this;
最后,我会在数组上调用 array_unique
以确保唯一性,然后将数组转换回要插入数据库的字符串:
$winners_string = implode(' ', array_unique($winners));
$stmt = $connection->prepare("update `draws` set `winner`= ? where code = ?");
// Use bing_param('si'...) if $draw['number'] is an integer, not a string
$stmt->bind_param('ss', $winners_string, $draw['number']);
$stmt->execute();
尽管理想情况下,正如您问题的评论中所提到的,有更好的方法来存储数据,例如有一个包含 draw_number
列和 winner
列的新表,只需为每个获胜者添加一个新行即可。
关于php - 检查字符串是否存在直到找到不存在的字符串的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28914728/