2013-04-26 112 views
-2

这里是我的代码中,我试图执行我的查询:为什么我的查询失败?

foreach ($ageGroups as $ageGroup) { 
    if ($mysqli->query("INSERT INTO national_age_gender_demographics (age_group, male_pop, female_pop, both_pop, male_percent, female_percent, both_percent, males_per_100_females) VALUES(". $ageGroup[0].", ".$ageGroup[1].", ".$ageGroup[2].", ".$ageGroup[3].", ".$ageGroup[4].", ".$ageGroup[5].", ".$ageGroup[6].", ".$ageGroup[7].")")) { 
     printf("Created row"); 
    } 
} 

$ ageGroups是包含子阵为我表的每一行数组的数组。

那么,你能帮我在这里吗?

+1

你可以问你的DBMS'mysqli_error_list()'http://php.net/manual/en/mysqli.error-list.php – Ejaz 2013-04-26 21:51:48

+2

你有错误信息吗?你的错误处理程序在哪里?否则,我们只是猜测。 – Kermit 2013-04-26 21:52:31

+0

通过查看生成的SQL帮助你自己,如果需要的话可以手工触发查询,这样你就可以获得交互式反馈并使用Mysql的通用查询日志 - 或者上述的任意组合。 – Jon 2013-04-26 21:52:35

回答

2

括上单引号的值,如:

VALUES('". $ageGroup[0]."', '".$ageGroup[1]."', '".$ageGroup[2]."', '". //etc 
+0

尼尔森是正确的。如果他们给你任何麻烦,你也可以考虑在你的sql语句中执行一个var_dump。您可能还想在调试失败时回显$ mysqli->错误。 – Kevin 2013-04-26 21:54:53

+0

那么数据看起来对我来说是INT(male_pop,female_pop等 – 2013-04-26 21:56:07

+0

@FC)你可以在带有MySQL的单引号中包含INT字段,没有问题 – Nelson 2013-04-26 21:57:11