php - 将数据从 JSON 对象发布到 MySQL

标签 php mysql arrays

我有一个在 PHP 页面中返回的 JSON 对象,可以使用以下行进行查看:

return json_decode($jsondata);

我的页面上的输出显示以下内容:

object(stdClass)#2 (6) { 
    ["offset"]=> int(0) 
    ["results"]=> array(1) { 
        [0]=> object(stdClass)#3 (6) { 
            ["status/_text"]=> string(11) "Available" 
            ["price"]=> string(6) "$9.99" 
            ["status/_source"]=> string(80) "/store/store/en_US/buy/SKU.123123123/ThemeID.123123123/Currency.USD/mktp.US" 
            ["status/_title"]=> string(11) "Available" 
            ["title"]=> string(25) "Mouse" 
            ["status"]=> string(109) "http://www.domain.com/store/store/en_US/buy/SKU.123123123/ThemeID.123123123/Currency.USD/mktp.US" 
        } 
    } 
    ["cookies"]=> array(8) { 
        [0]=> string(112) "VISITOR_ID="1D4E8DFA72ADBFE2B570FD25A6EE06E";Path="/";Domain="www.domain.com";Port="80"" 
        [1]=> string(445) "SESSION="SessionID";Path="/";Domain="www.domain.com";Port="80"" 
        [2]=> string(70) "X-DR-LOCALE="en_US";Path="/";Domain="www.domain.com";Port="80"" 
        [3]=> string(70) "X-DR-CURRENCY="USD";Path="/";Domain="www.domain.com";Port="80"" 
        [4]=> string(72) "X-DR-THEME="123123123";Path="/";Domain="www.domain.com";Port="80"" 
        [5]=> string(96) "BIGipServerp-dynamicpool="841066.260.0000";Path="/";Domain="www.domain.com";Port="80"" 
        [6]=> string(80) "USE_ALTERNATE_GC_SITE="False";Path="/";Domain="www.domain.com";Port="80"" 
        [7]=> string(111) "BIGipServerp-c033-prd-proxy-active="9626.65057.0000";Path="/";Domain="www.domain.com";Port="80"" 
    } 
    ["connectorVersionGuid"]=> string(36) "2a1ec4c-8b02-c8bb1cce" 
    ["connectorGuid"]=> string(36) "d243-9b57-3f41729f76a3" 
    ["pageUrl"]=> string(97) "http://www.domain.com/store/store/en_US/pdp/Mouse/SKU.123123123" 
}

var_dump 的输出如下所示:

string(1743) "{"offset":0,"results":[{"status/_text":"Available","price":"$9.99","status/_source":"/store/store/en_US/buy/productID.123123123/ThemeID.33363200/Currency.USD/mktp.US","status/_title":"Available","title":" Mouse","status":"http://www.domain.com/store/store/en_US/buy/productID.123123123/ThemeID.33363200/Currency.USD/mktp.US"}],"cookies":["VISITOR_ID=\"971D4E8DFAED4367DC9214BBB4AA2CC692F62AA82773DBA\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","SESSION=\"dr7jLmcwTV+++yiyGVurgIDs80OKxywxJHPEEPVmi44pEZlC1QXhiTSCFldtMXQ8+TH4SX8ykhfrhf11LFlS+/jeqt127gO0LoBoDlVeMMZCGn2kAYIR/H1KG4DVAtTuyh05Nzq02KSiQK4/4rYVRIA2//PzGdQef/1XWS2SPQqId583XdI6LEvyMLeAv94Ag4LgpsoFlDFvXrkXJ+ \";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","X-DR-LOCALE=\"en_US\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","X-DR-CURRENCY=\"USD\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","X-DR-THEME=\"33363200\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","BIGipServerp-dynamicpool=\"762720522.260.0000\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","USE_ALTERNATE_GC_SITE=\"False\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","BIGipServerp-c033-drx-prd-proxy-active=\"226177290.65057.0000\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\""],"connectorVersionGuid":"46d7-8b02 ","connectorGuid":" 3ff76a3","pageUrl":"http://www.domain.com/store/store/en_US/pdp/Mouse/productID.123123123"}" NULL

这部分看起来效果很好。我还可以使用如下代码将数据写入 MySQL 数据库:

mysqli_query($con,"INSERT INTO Table (URL, Product, Price, Status)
VALUES ('URL', 'Product','1','Yes')");
mysqli_close($con);

我现在尝试从 $jsondata 获取数据,并使用上面的 SQL 作为模板将特定字段发布到 MySQL Table 表中。如何使用 JSON 对象中的正确数据替换 URL、产品、价格和状态的硬编码值?

这是我认为应该发生的映​​射:

URL = pageUrl
Product = title
Price = price
Status = status/_text

谢谢!

最佳答案

您已经解码了响应,然后只需正常插入它们即可:

$jsondata = json_decode('{"offset":0,"results":[{"status/_text":"Available","price":"$9.99","status/_source":"/store/store/en_US/buy/productID.123123123/ThemeID.33363200/Currency.USD/mktp.US","status/_title":"Available","title":" Mouse","status":"http://www.domain.com/store/store/en_US/buy/productID.123123123/ThemeID.33363200/Currency.USD/mktp.US"}],"cookies":["VISITOR_ID=\"971D4E8DFAED4367DC9214BBB4AA2CC692F62AA82773DBA\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","SESSION=\"dr7jLmcwTV+++yiyGVurgIDs80OKxywxJHPEEPVmi44pEZlC1QXhiTSCFldtMXQ8+TH4SX8ykhfrhf11LFlS+/jeqt127gO0LoBoDlVeMMZCGn2kAYIR/H1KG4DVAtTuyh05Nzq02KSiQK4/4rYVRIA2//PzGdQef/1XWS2SPQqId583XdI6LEvyMLeAv94Ag4LgpsoFlDFvXrkXJ+ \";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","X-DR-LOCALE=\"en_US\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","X-DR-CURRENCY=\"USD\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","X-DR-THEME=\"33363200\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","BIGipServerp-dynamicpool=\"762720522.260.0000\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","USE_ALTERNATE_GC_SITE=\"False\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\"","BIGipServerp-c033-drx-prd-proxy-active=\"226177290.65057.0000\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\""],"connectorVersionGuid":"46d7-8b02 ","connectorGuid":" 3ff76a3","pageUrl":"http://www.domain.com/store/store/en_US/pdp/Mouse/productID.123123123"}');
$results = $jsondata->results;

$db = new mysqli('localhost', 'username', 'password', 'database_name');
$insert = $db->prepare('INSERT INTO `table_name` (URL, Product, Price, Status) VALUES(?, ?, ?, ?) ');
foreach($results as $val) {
    $insert->bind_param('ssss', $jsondata->pageUrl, $val->title, $val->price, $val->{'status/_text'});
    $insert->execute();
}

关于php - 将数据从 JSON 对象发布到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26172154/

相关文章:

php - 该程序无法启动,因为在我的计算机上启动 Apache 服务器时缺少 api-ms-win-crt-runtime-l1-1-0.dll

php - 了解在 OOP 中返回和传递自定义对象的目的

Java-在一定条件下向后迭代数组

php - Laravel 5.1 中的 mysql 外键错误

php - 在 Laravel 中应用 Eloquent 的 ORM 的最佳方式?

MYSQL - 如果表为空则插入

php - 使用 php 将数据插入 MySql 后使用 SweetAlert 显示消息

mysql - 检索不到一天的行

javascript - 使用 ReactJS 显示新的列表项 onclick

c - 如何释放分配的内存?