我是PHP的新手,并且已经完成了一些关于如何编写页面来运行代码的教程。虽然我弄清楚为什么我的While循环只是在循环的第一次迭代中执行公共函数,但我遇到了麻烦。有什么想法吗?
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$info = array("name" => "", "class" => "", "description" => "", "characteristics" => "");
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
$info[$c] = $data[$c];
}
echo print_r($info);
infoDB::getInstance()->create_record($info[0],$info[1],$info[2],$info[3]);}
上面的代码为While循环的每次迭代打印$ info数组,但create_record函数只将第一次迭代的结果插入到相应的MYSQL数据库中。 PHP / Instantiation中的逻辑是否存在固有的东西,这意味着它只在第一次迭代时执行?
以下是它要求参考的函数(对于第一次迭代正常工作,然后不再重复)
public function create_record ($info, $class, $description, $characteristics) {
$this->query("INSERT INTO tbl_info (toon, zeta, description, characteristics)" . " VALUES ('" . $toon . "', '" . $zeta . "', '" . $description . "', '" . $characteristics . "')");
}
答案 0 :(得分:1)
解决问题
public function create_record ($info, $class, $description, $characteristics) {
$this->query("INSERT INTO tbl_info (toon, zeta, description, characteristics)" . " VALUES ('" . $toon . "', '" . $zeta . "', '" . $description . "', '" . $characteristics . "')");
}
现在
public function create_record ($info, $class, $description, $characteristics) {
$name = $this->real_escape_string($name);
$class = $this->real_escape_string($class);
$description = $this->real_escape_string($description);
$characteristics = $this->real_escape_string($characteristics);
$this->query("INSERT INTO tbl_info (toon, zeta, description, characteristics)" . " VALUES ('" . $toon . "', '" . $zeta . "', '" . $description . "', '" . $characteristics . "')");
}
查询失败是基于它从需要转义的源电子表格中读取的内容