Intereting Posts

Итак, у меня есть json-файл, как я могу вставить его в mysql?

Я ищу, чтобы PHP-скрипт обновлял mysql каждый час из json-файла.

api – это то, что

http://backpack.tf/api/IGetMarketPrices/v1/?key=51f7eb704bd7b8231900000c&appid=730&format=json

Как я могу скопировать эти вещи из json и поместить их в mysql?

Я имею в виду что-то подобное

"AK-47 | Aquamarine Revenge (Battle-Scarred)": { "last_updated": 1436569230, "quantity": 34, "value": 2268 }, "AK-47 | Aquamarine Revenge (Factory New)": { "last_updated": 1436569230, "quantity": 21, "value": 9386 }, "AK-47 | Aquamarine Revenge (Field-Tested)": { "last_updated": 1436569230, "quantity": 55, "value": 4968 }, "AK-47 | Aquamarine Revenge (Minimal Wear)": { "last_updated": 1436569230, "quantity": 40, "value": 6018 }, "AK-47 | Aquamarine Revenge (Well-Worn)": { "last_updated": 1436569230, "quantity": 40, "value": 3597 }, "AK-47 | Black Laminate (Battle-Scarred)": { "last_updated": 1436569230, "quantity": 50, "value": 345 }, "AK-47 | Black Laminate (Factory New)": { "last_updated": 1436569230, "quantity": 8, "value": 8593 }, "AK-47 | Black Laminate (Field-Tested)": { "last_updated": 1436569230, "quantity": 141, "value": 308 }, 

Я хочу, чтобы это было в mysql, как это

введите описание изображения здесь

Это то, что у меня есть до сих пор:

 <?php $json = file_get_contents('http://backpack.tf/api/IGetMarketPrices/v1/?key=51f7eb704bd7b8231900000c&appid=730&format=json'); $obj = json_decode($json,true); //Database Connection require_once 'db.php'; /* insert data into DB */ foreach($obj as $item) { mysql_query("INSERT INTO `cyberst_CSGO`.`items` ( cost, lastupdate) VALUES ('".$item['value']."'', '".$item['last_updated']."')"); } //database connection close mysql_close($con); //} ?> 

EDIT: этот код генерирует временный файл с разделителями табуляции и использует LOAD DATA IN FILE для вставки этого файла в базу данных, а затем удаляет временный файл.

  1. Использование MySQLi – функции mysql устарели в PHP сейчас
  2. EDIT: cost = value * 0.01 .
  3. Самый быстрый способ загрузить кучу данных в MySQL – это LOAD DATA INFILE
  4. Я не тестировал импорт базы данных, но я использовал этот метод много раз, и он работает очень хорошо.
  5. Возможно, вам придется mysqli_real_escape_string() избежать $name $cost $row с mysqli_real_escape_string() или $conn->real_escape_string() . Я не проверял все ваши данные.

Вот PHP:

 $json = file_get_contents('http://backpack.tf/api/IGetMarketPrices/v1/?key=51f7eb704bd7b8231900000c&appid=730&format=json'); $obj = json_decode($json,true); //open a temporary file to hold data $path = str_replace('\\','/',realpath(dirname(__FILE__))); $filename = time().'tmp.csv'; $filename = $path.'/'.$filename; $tmpfile = fopen($filename,'w+'); //data to loop through and write to temporary file $loopme = $obj['response']['items']; foreach($loopme as $name=>$row) { //i'm guessing this is what cost is $cost = $row['value'] * 0.01; //write to our tmp file fwrite($tmpfile,"$name\t$cost\t$row[last_updated]\n"); } // this is the fastest way to load large amounts of data into MySQL $sql = "LOAD DATA INFILE '$filename' INTO TABLE `cyberst_CSGO`.`items` FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'"; //run your mysql query //delete temporary file unlink($filename);