php - JSON 到 MYSQL - JSON 响应格式是否正确 - 循环正确吗?

标签 php mysql arrays json

好的 - 我正在尝试加载 JSON 响应(来自名为recipes.json 的外部文件,其中包含数百个菜谱),其格式如下,以便将其插入名为“recipes”的 MySQL 表中:

{ "recipeName": "After Glow Smoothie",  "ingredients": "4 oz. (1/2 cup) pomegranate juice", "ingredients2": "4 oz. (1/2 cup orange juice)", "ingredients3": "2 scoops Vi-Shape shake mix", "ingredients4": "1 cup frozen pineapple", "ingredients5": "5 ice cubes"},
{ "recipeName": "All Berry Delight",     "ingredients": "8 oz. skim milk", "ingredients2": "2 scoops Vi-Shape shake mix", "ingredients3": "1/4 cup frozen raspberries", "ingredients4": "1/4 cup frozen blackberries", "ingredients5": "1/4 cup frozen strawberries", "ingredients6": "1/4 cup frozen dark cherries", "ingredients7": "5 ice cubes"}

我对数组不太熟悉,所以我想知道为什么我无法循环遍历食谱并正确插入它们。是我的 JSON 格式错误,还是我是一个 PHP 菜鸟,以至于我在主代码中犯了错误。供引用如下:

<?php
header('Content-Type: text/html; charset=utf-8');

$hostname_ndb = "localhost";
$database_ndb = "test";
$username_ndb = "root";
$password_ndb = "root";
$ndb = mysql_pconnect($hostname_ndb, $username_ndb, $password_ndb) or trigger_error(mysql_error(),E_USER_ERROR); 

$url = "http://localhost:8888/shakerecipes/recipes.json";


$json = file_get_contents($url);
// var_dump(json_decode($json, true));
$out = json_decode($json, true);


foreach($out["recipeName"] as $recipeNames) { 
$name = addslashes($recipeNames[recipeName]); 
$ingredients= addslashes($recipeNames[ingredients]); 
$ingredients2 = addslashes($recipeNames[ingredients2]);
$ingredients3 = addslashes($recipeNames[ingredients3]);
$ingredients4 = addslashes($recipeNames[ingredients4]);
$ingredients5 = addslashes($recipeNames[ingredients5]);
$ingredients6 = addslashes($recipeNames[ingredients6]);
$ingredients7 = addslashes($recipeNames[ingredients7]);
$ingredients8 = addslashes($recipeNames[ingredients8]);
$ingredients9 = addslashes($recipeNames[ingredients9]);

mysql_query("INSERT INTO test (recipeName, ingredients, ingredients2, ingredients3, ingredients4, ingredients5, ingredients6, ingredients7, ingredients8, ingredients9) VALUES('$name', '$ingredients', '$ingredients2', '$ingredients3', '$ingredients4', '$ingredients5', '$ingredients6', '$ingredients7', '$ingredients8', '$ingredients9')") or die (mysql_error()); 
}
?>

感谢您提供的所有提示/帮助。

BRR

最佳答案

首先,您应该使用 mysql_real_escape_string而不是添加斜杠。

其次,您应该/可以使用 $recipeNames 执行另一个 foreach 循环。

或者你可以使用 lambda/closure 风格。

array_walk($recipeNames, function(&$value) {
    $value = mysql_real_escape_string($value);
});

之后你的值(value)观就会内爆

mysql_query("INSERT INTO test (recipeName, ingredients, ingredients2, ingredients3, ingredients4, ingredients5, ingredients6, ingredients7, ingredients8, ingredients9) VALUES('".implode('\',\'', $recipeNames)."')") or die (mysql_error());

关于php - JSON 到 MYSQL - JSON 响应格式是否正确 - 循环正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5944128/

相关文章:

php - 在 php 运行时包含来自外部站点的数据

PHP 可迭代到数组或可遍历

javascript - 无法使用 AJAX 获取 PHP 变量

php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数 1 是资源

c++ - 如何存储数组的每个连续子数组的总和?

c++ - 如何将函数的整数大小与数组的实际大小联系起来? C++

PHP递归搜索和替换数组元素

php - 按最大计数聚合查询 (MYSQL)

php - 在 PHP/MySQL 中运行周一和周日之间的查询

mysql - 我只是将文本文件加载到表中......然后我收到这样的错误