我有一些代码在几个小时前完美运行,并且由于某种原因它是完全没用的。
我已经在网上搜了几个小时试图找出我收到通知的原因:数组到字符串转换错误。
在上一页上,我将团队名称和团队名称数组发布到创建错误消息的页面。
如果我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等生成表,但是我废弃了它们,我确信代码就像今天早上一样。
非常感谢任何帮助。
由于
答案 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);