我正在创建一个简单的彩票脚本。
这个想法是,在一个彩票中可能会有一些赢家,我在检查新赢家是否已经赢得这个彩票的人时会遇到麻烦。
我将这种数据存储在数据库中。
list [longtext] - 包含参赛者名单的栏目(以空格或逗号分隔) 获胜者[longtext] - 包含此抽奖中获胜者列表的列(以空格分隔)
我的循环:
//$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());
我的循环不起作用。它将永远循环或根本不循环。我不知道怎么写这个。
如何创建一个在获胜者重复时运行的循环,直到找到新的获胜者?
答案 0 :(得分:1)
我要做的第一件事就是将旧的获胜者转换为数组:
$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
列的新表格,只需为每位获胜者添加一个新行。
答案 1 :(得分:0)
$ czy始终为false,因此在此脚本中不会发生任何事情。它总是错误的,因为您使用错误的语法来搜索数组。更改您的解决方案以检查您的阵列Michael示例是正确的。试试吧