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

标签 php mysql

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

这个想法是,在一张彩票中可能会有几个中奖者,而我在检查新的中奖者是否是已经在该彩票中中奖的人时遇到了麻烦。

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

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/

相关文章:

php - INSERT INTO 数据库不起作用

php - 不要在移动设备上加载 jQuery

mysql - 从 MySql 中字段值的开头删除一个字符

python - django View 中的原始 SQL 显示错误

php循环每天几次

php - 将脚本查询简化为单个查询

php - Paypal 多件商品 立即购买

php - 在数据库中存储可变数量的数据

MySql GMT 日期和时区

php - 使用排序函数对数据进行排序还是从数据库中检索排序?