2016-06-12 79 views
-2

这是我的PHP代码,用于将来自'country.json'的json数据保存到mysql表中。如何解决我的PHP代码中的这个错误

<?php 
$host="localhost"; 
$user="root"; 
$pass=""; 
$db="jsondb"; 
$connect= new mysqli($host,$user,$pass,$db) or die("ERROR:could not connect  to the database!!!"); 



$fo=fopen("country.json","r"); 
$fr=fread($fo,filesize("country.json")); 
$array=json_decode($fr,true); 

//To display all values from JSON file 
//print_r($array); 

$query="insert into country values('$array[name]','$array[code]')"; 

$connect->query($query); 

echo "Data Imported Sucessfully from JSON!"; 
?> 

JSON文件有超过100 entris像这样的: [{ “名”: “阿富汗”, “代码”: “AF” },{ “名”:“一......土地群岛”, “代码”: “AX” },{ “名”: “阿尔巴尼亚”, “代码”: “AL” }

但是,在浏览器本地主机上运行此脚本后,它会给出错误:

注意:未定义指数:名称在C:\ XAMPP \ htdocs中\ Suraj_Assignment_8线\ Suraj_Assignment_8.php 17

说明:未定义指数:代码在C:\ XAMPP \ htdocs中\ Suraj_Assignment_8 \上线17 Suraj_Assignment_8.php 从JSON导入的数据成功!

我该如何解决?

$query="insert into country values('$array[name]','$array[code]')"; 

到:

+1

'var_dump($ array);'。哦,看看... –

+0

你不能在SQL语句中使用这样的“数组构造”,但它实际上是为了工作。你可以使用循环迭代数组元素来创建一个字段和值列表。或者你导出到CSV并直接加载到你的MySQL服务器。 – arkascha

+0

你需要遍历你的'$ array',给我​​看看答案。 – weigreen

回答

0

你通过你的$array

变化需要循环

foreach ($array as $value){ 
    $query="insert into country values('".$value['name']."','".$value[code]."')"; 
    $connect->query($query); 
} 
+0

它真的有用吗? –

+0

@ManishJangir哪一部分你认为它不会工作? – weigreen

+0

以前,在查询中没有围绕名称和代码的单引号。 –

0

你可以试试这个:

$query="insert into country values('".$array['name']."','".$array['code']."')"; 
+0

由于您需要遍历数组,因此无法工作。 – Marki555

0

改变此密码为

$query="insert into country values('".$array['name']."','".$array['code']."')"; 

键应该在引号中。所以在这里你可以像上面那样做,或者你也可以转义序列

$query="insert into country values('$array[\"name\"]','$array[\"code\"]')"; 
相关问题