检查字符串是否存在的函数,直到找到不存在的字符串

时间:2015-03-07 12:10:24

标签: php mysql

我正在创建一个简单的彩票脚本。

这个想法是,在一个彩票中可能会有一些赢家,我在检查新赢家是否已经赢得这个彩票的人时会遇到麻烦。

我将这种数据存储在数据库中。

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());

我的循环不起作用。它将永远循环或根本不循环。我不知道怎么写这个。

如何创建一个在获胜者重复时运行的循环,直到找到新的获胜者?

2 个答案:

答案 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示例是正确的。试试吧