3

好的,基本上我不知道如何将 mysql 的内爆结果返回到 php 中的可用变量。阵列让我陷入循环,让我发疯。

从数据库动态创建的复选框:

<input name="tournament_id[]" value="'.$row['tournament_id'].'" type="checkbox">'.$row['tournament_name'].'

发布的值内爆(尚未实施 sql 注入预防):

$got_tournament_id = implode(",",$_POST['tournament_id']);

这会像这样插入到 mysql 中:

id   user_id   tournament_id
1    16942627  1,10

这是我获取内爆数据的 mysql 查询:

$query = ("SELECT tournament_id FROM tournament WHERE user_id=16942627");
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$got_it = $row['tournament_id'];    
}
$bust_him = var_dump(explode(",", $got_it));
echo $bust_him;

以上使用 var_dump 将返回以下内容:

array(2) { [0]=> string(1) "1" [1]=> string(2) "10" }

现在这是我完全迷失的地方,无法弄清楚如何将值 1 和 10 从数组中获取到单个变量中。我已经尝试了几种方法来做到这一点,但我一直以错误告终,或者只是单词数组。如果有人可以提供一些帮助,我需要一些帮助。提前致谢。

4

1 回答 1

7

不要var_dump(),其目的是调试,而不是代码或显示逻辑。只需将输出存储explode()$bust_him多么奇怪的变量名):

// Store the output of explode() directly
$bust_him = explode(",", $got_it);
// No need for individual variables, just access via array keys.
echo $bust_him[0];
echo $bust_him[1];
// etc...

如果你有固定数量的元素,你可以list()用来放入变量中:

// You know you only have two, so you can use list()
// to store directly into variables
list($first, $second) = explode(",", $got_it);
echo $first;
echo $second;

从长远来看,比在表中存储逗号分隔值更好的解决方案是创建一个单独的、正确规范化的表,该表链接tournament_iduser_id. 然后,每个 有多行user_id,每行包含一个 tournament_id. 这使得在许多实例中进行更简单和更有效的查询,例如可以使用COUNT()聚合,以及许多其他好处。

于 2012-07-24T14:18:18.947 回答