【发布时间】:2015-06-22 20:11:19
【问题描述】:
好的,我创建了一个包含 270 多个不同字符串的数组。主要目标是从该数组中回显 60 个字符串并将它们组合起来..
例如。 1.String,1.String2。
2 个回显字符串是一个组合,应该像 1-1 和 2-2、3-3 等一样组合在一起。总共将有 30 种组合,但有 60 个字符串。
另外,我有它的方式是第一个生成的字符串应该与生成的第 31 个字符串组合
我可以使用 for 循环来做到这一点,但现在我必须使用 mysql 数据库来检查该组合是否已经存在,然后告诉随机运算符生成另一个组合,直到它找到一个不存在的组合表中已经存在。这是我目前所拥有的,但我不确定从这里去哪里。
$input = array("ITEM1", "ITEM2", "ITEM3", "ITEM4", "ITEM5"); //There are 273 items in the list
$rand_keys = array_rand($input, 60);
$con = mysqli_connect($server, $user, $password, $name_db);
for ($i = 0; $i <= 29; $i++) {
$check = "SELECT * FROM contest WHERE name1 = '$input[$rand_keys[$i]]' AND name2 = '$input[$rand_keys[$i+30]]'";
$rs = mysqli_query($con, $check);
$data = mysqli_fetch_array($rs, MYSQLI_NUM);
if ($data[$i] > 1) {
//This combination already exists generate a new one until it generates one that doesn't exist
while ($data[$i] > 1) {
$rand_keys2 = array_rand($input, 2);
$input[$rand_keys2[0]] = $input[$rand_keys[$i]];
$input[$rand_keys2[1]] = $input[$rand_keys[$i + 30]];
}
echo $input[$rand_keys[$i]];
echo '-';
echo $input[$rand_keys[$i + 30]];
} else {
echo $input[$rand_keys[$i]];
echo '-';
echo $input[$rand_keys[$i + 30]];
}
}
到目前为止,这就是我所拥有的,我很确定我的错误出现在 mysql 语句中,任何人都可以为我解决这个问题,其余部分可能还有很多错误。我才刚刚开始,所以如果你看到它们,请不要介意一些菜鸟错误。顺便说一句,当我运行它时,它只是一个空白页。
【问题讨论】:
-
如果您认为查询中有错误,请使用
$rs = mysqli_query($con, $check) or die(mysqli_error($con)); -
“顺便说一句,当我运行它时,它只是进入一个空白页面。” - 这通常与语法错误有关,但你没有检查它们,也没有显示它们。在您打开 PHP 标记(例如
<?php error_reporting(E_ALL); ini_set('display_errors', 1);)之后将错误报告添加到文件顶部,然后是其余代码,以查看它是否产生任何结果。 -
不要永远尝试从字符串中获取 php 数组数据!!!!
'$input[$rand_keys[$i]]'应该是'".$input[$rand_keys[$i]]."'或'{$input[$rand_keys[$i]]}' -
老爷,希望我现在可以说。尝试转义您的数据,可能会有 MySQL 正在处理的字符,或者尝试
WHERE name1 = '{$input[$rand_keys[$i]]}'或WHERE name1 = '".$input[$rand_keys[$i]]."'等...换另一个。我在这里陷入了死胡同,对不起。编辑:似乎@Twister1002 和我有同样的想法;我们同时输入了它,哈哈 -
@Fred-ii- 是的,它现在正在显示数据,谢谢!