数组值在查询中不起作用

时间:2014-01-16 20:57:35

标签: php mysql sql arrays

我有一些代码在几个小时前完美运行,并且由于某种原因它是完全没用的。

我已经在网上搜了几个小时试图找出我收到通知的原因:数组到字符串转换错误。

在上一页上,我将团队名称和团队名称数组发布到创建错误消息的页面。

如果我var_dump数组(称为$ teams),那么所有数据都在那里,数组中的每个团队名称。

array(1) { [0]=> array(12) { [0]=> string(6) "Team a" [1]=> string(6) "Team a" [2]=> string(6) "Team a" [3]=> string(6) "Team b" [4]=> string(6) "Team b" [5]=> string(6) "Team b" [6]=> string(6) "Team c" [7]=> string(6) "Team c" [8]=> string(6) "Team c" [9]=> string(6) "Team d" [10]=> string(6) "Team d" [11]=> string(6) "Team d" } }

注意,团队名称会重复,因为这是一个夹具列表,因此每个团队都会扮演每个团队。

但是,我的查询中出现了数组到字符串转换错误。

所以,在页面的顶部,我根据这样发布的数据创建一个数组......

$team[]=$_POST['team'];

然后在我的查询中运行for循环并运行查询,总结如下;

$count=count($team);
for($i=0;$i<$count;$i++ {
$query=$database->query("UPDATE pool_a SET ......where team_name='$team[$i]')"

我很困惑,我之前做了一些编辑,尝试添加更多查询来为pool_b,pool_c等生成表,但是我废弃了它们,我确信代码就像今天早上一样。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:1)

根据您发布的var_dump(),您的数组实际上位于$team[0]

看起来您需要更改此内容:

$team[] = $_POST['team'];

到此:

$team = $_POST['team'];

分配给$team[]本质上为您提供了额外的数据包装。

由于数组中也有重复值,因此在查询数据库之前,应将数组仅减少为唯一值。

$team = array_unique($team);

您最好使用包含所有项目的单个查询:

$query = "UPDATE pool_a SET ... WHERE team_name IN('" . implode("','", $team) . "')";
$database->query($query);