0

我正在尝试编写一个包含类别的前 10 名列表,但它并没有按照我想要的方式工作。有一个包含动态项目数 (n) 的数组,并且希望将此数组中的每个项目循环 10 次以将 n*10 行写入 MySQL 表。($i 也会增加游戏排名)。如果我回显、print_r 或 var_dump 代码它可以工作,但是当我尝试将它写入 MySQL 表时它不起作用。

这是代码:

for ($i = 1; $i <= 10; $i++) {
foreach($titles as $val) {
$query .=  "INSERT INTO charts (game_place, game_name, game_preweek, game_developer, game_release, game_link, game_image, game_category, charts_updated) VALUES (".$i.", '', '', '', '', '', '', '".$val."', '".time()."');";
mysql_query($query);
};
};

有人知道我的问题的答案吗?

4

2 回答 2

4
$query .=  "INSERT ....` 

您将每个新查询添加到前一个查询的末尾。这将在第一次迭代后产生无效的 SQL。您只需将查询分配为:

$query =  "INSERT ....` 

您还应该考虑使用 PDO 或 mysqli_ 代替 - 这种东西是准备好的语句的理想用途。

于 2013-07-16T15:18:19.717 回答
0
$query =  "INSERT INTO `charts`` (`game_place`, `game_category`, `charts_updated`) VALUES ";
foreach ($titles as $key => $val){
    for ($i=1; $i<=10; $i++){
        $query .= "(".$i.", '".$val."', ".time()."),";
    }
}
$query = substr($query, 0, -1);//remove last comma
mysql_query($query);
于 2013-07-16T17:39:11.400 回答