php - 多个json数据进入mysql数据库表不插入

标签 php mysql json

我有这个代码。

<?php
// open mysql connection
$host = "localhost";
$username = "root";
$password = "";
$dbname = "jacklin";
$con = mysqli_connect($host, $username, $password, $dbname) or die('Error in Connecting: ' . mysqli_error($con));
// use prepare statement for insert query
$st = mysqli_prepare($con, 'INSERT INTO company_details(com_name, city, com_address, com_mno, com_lno, com_faxno, com_email, com_url, contact_person, com_img,
 lat, lng, cat_src_pos, state, country, password, status, plan, token, pin, contact_person1, contact_person2,
  com_mno1, com_mno2, fpass_token, adv_src_pos, alias, com_skype, cover)
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
// bind variables to insert query params
mysqli_stmt_bind_param($st, 'ssssssssssssissssssssssssisss', $id, $city, $com_address, $com_mno, $com_lno, $com_faxno, $com_email, $com_url, $contact_person, $com_img, $lat, $lng, $cat_src_pos, $state, $country, $password, $status, $plan, $token, $pin, $contact_person1, $contact_person2, $com_mno1, $com_mno2, $fpass_token, $adv_src_pos, $alias, $com_skype, $cover);
// read json file
$filename = 'empdata.json';
$json = file_get_contents($filename);   
//convert json object to php associative array
$data = json_decode($json, true);
// loop through the array
foreach ($data as $row) {
    // get the employee details
    $id = $row['com_name'];
    $city = $row['city'];
    $com_address = $row['com_address'];
    $com_mno = $row['com_mno'];
    $com_lno = $row['com_lno'];
    $com_faxno = $row['com_faxno'];
    $com_email = $row['com_email'];
    $com_url = $row['com_url'];
    $contact_person = $row['contact_person'];
    $com_img = $row['com_img'];
    $lat = $row['lat'];
    $lng = $row['lng'];
    $cat_src_pos = $row['cat_src_pos'];
    $state = $row['state'];
    $country = $row['country'];
    $password = $row['password'];
    $status = $row['status'];
    $plan = $row['plan'];
    $token = $row['token'];
    $pin = $row['pin'];
    $contact_person1 = $row['contact_person1'];
    $contact_person2 = $row['contact_person2'];
    $com_mno1 = $row['com_mno1'];
    $com_mno2 = $row['com_mno2'];
    $fpass_token = $row['fpass_token'];
    $adv_src_pos = $row['adv_src_pos'];
    $alias = $row['alias'];
    $com_skype = $row['com_skype'];
    $cover = $row['cover']   
    // execute insert query
    mysqli_stmt_execute($st);
}
//close connection
mysqli_close($con);
?>

和我的 empdata.json 是一样的。

[{"com_id":"1","com_name":"SORENTO GRANITO PVT.LTD","city":"Morbi","com_address":"8-A National High WayOld ghuntu Road ,Morbi - 363 642 (Guj.) INDIA","com_mno":"+919377721600","com_lno":"02822 - 243783 \/ 84","com_faxno":"(02822) 243785","com_email":"marketing@sorentogranito.com","com_url":"www.sorentogranito.com","contact_person":"Mr. Bhagubhai Tulsiyani","com_img":"1403952411.png","lat":"22.824254","lng":"70.8606801","cat_src_pos":"400000","state":"Gujarat","country":"India","password":"91SORESGPL","status":"active","plan":"premium","token":"","pin":"363 642","contact_person1":"","contact_person2":"","com_mno1":"","com_mno2":"","fpass_token":"","adv_src_pos":"400000","alias":"sorento-granito-pvt-ltd","com_skype":"","cover":"motto.jpg"},{"com_id":"3","com_name":"COTO CERAMIC PVT LTD","city":"Morbi","com_address":"8-A National Higway,B\/ h Makansar Panjarapore Weed...","com_mno":"+919099173713","com_lno":"+919099173713","com_faxno":"","com_email":"info@cotobathware.com","com_url":"www.cotobathware.com","contact_person":"Mr. SUMEET MARVANIYA","com_img":"d08687ba60bb3f0d1317e2fd8b10afd4.png","lat":"22.748123","lng":"70.9369573","cat_src_pos":"500000","state":"Gujarat","country":"India","password":"MAYANK8877","status":"active","plan":"basic","token":"","pin":"363621","contact_person1":"","contact_person2":"","com_mno1":"","com_mno2":"","fpass_token":"","adv_src_pos":"500000","alias":"coto-ceramic-pvt-ltd","com_skype":"","cover":"motto.jpg"},{"com_id":"4","com_name":"GLORY CERAMIC PVT LTD","city":"Morbi","com_address":"8\/A , National Highway Lalpar Morbi","com_mno":"+919825228848","com_lno":"02822 - 650445\/ 652446","com_faxno":"","com_email":"gloryceramic@yahoo.co.in","com_url":"www.gloryceramic.com","contact_person":"Mr. Niraj Thakkar","com_img":"1403952443.png","lat":"22.7968786","lng":"70.8907196","cat_src_pos":"80000","state":"Gujarat","country":"India","password":"9227650445","status":"active","plan":"premium","token":"","pin":"363 641","contact_person1":"","contact_person2":"","com_mno1":"","com_mno2":"","fpass_token":"","adv_src_pos":"80000","alias":"glory-ceramic-pvt-ltd","com_skype":"","cover":"motto.jpg"},{"com_id":"5","com_name":"SALON CERAMIC PVT.LTD.","city":"Morbi","com_address":"8-A National Highway, Olg Ghuntu Road, Morbi - 363 642(Guj.) INDIA","com_mno":"+91 9825223840","com_lno":"+91 2822 242115","com_faxno":"+91 2822 242116","com_email":"info@salonceramic.com","com_url":"www.salonceramic.com","contact_person":"Mr. Hiteshbhai","com_img":"1413397071.PNG","lat":"22.838649048614528","lng":"70.88279977525485","cat_src_pos":"400000","state":"Gujarat","country":"India","password":"123salon123","status":"active","plan":"premium","token":"252985240685b6f5b1728d0d31bc585b","pin":"363642","contact_person1":"","contact_person2":"","com_mno1":"","com_mno2":"","fpass_token":"","adv_src_pos":"400000","alias":"salon-ceramic-pvt-ltd","com_skype":"","cover":"motto.jpg"}]

有 1000 条记录。但是当我在我的本地主机上运行上面的代码时,它没有显示任何错误,也没有向数据库插入任何记录。请告诉我如何将这种类型的 json 插入数据库。

最佳答案

尝试一个简单的foreach循环来统计数据的数量,然后做一个for循环来运行insert语句:

$file = file_get_contents('empdata.json');
$json = json_decode($file, true);
//echo '<pre>';
//print_r($json);    
$num = array();//Open Blank array for number of data
foreach($json as $k => $v):
    $num [] = $v; //number of data        
endforeach;
$row= count($num);//Put number of data in $row
for($i=0; $i<$row; $i++){
   //instead of putting the value in the statement, store them in variable
   $com_name = $json[$i]['com_name'];
   $city = $json[$i]['city'];
   $com_address = $json[$i]['com_address'];
   //Put the other variable like this and put them in insert statement
   $stmt = mysqli_prepare($con, "INSERT INTO company_details VALUES (?, ?,?)");
   mysqli_stmt_bind_param($stmt, 'sss', $com_name, $city, $com_address);
}

这只是一个简单的工作解决方案(working demo with real database)。我没有时间输入所有字段。对于第二个和第三个循环,没有传真号码,所以如果数据字段默认值不能为空值,就会出现问题,你的语句将无法正常工作,很可能会失败。我希望这会有所帮助。

关于php - 多个json数据进入mysql数据库表不插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36356474/

相关文章:

php - 使用命令行 curl 模拟 HTTP POST 并将输出导出到文本文件

php - 使用 PHP 将图像上传到 MySQL

java - 如何在 mysql SELECT 查询中使用文本字段输入

MySQL - 跨表计数

mysql - 选择按字段分组的平均每月计数

Javascript/JSON : Swap items in array

php - media_sideload_image 出现 fatal error 调用 C 中未定义的函数 wp_get_current_user() :\xampp\htdocs\project-name\wp-includes\capabilities. php

Javascript JSON.parse()

java - 嵌套对象的改造解析

php - 在 PHP 的类中包含文件