JSON 通过 PHP 到 MySQL 的网络挂钩
JSON web hook to MySQL via PHP
我是从 PHP 开始的,我有一个网络服务器接收 JSON 格式的传入网络挂钩。
Web 挂钩可以根据对象分为 3 种不同的结构。根据 "type":.
将每种不同的格式插入不同的 table
webhook的3种格式如下。
1.
{"message":
{"team_id": 3,
"place_points": 4000,
"last_modified": 1480297989459,
"latitude": 27.140134,
"guard_object_id": 130,
"enabled": true,
"place_id": "YjliYjRkYzJiZmI0NDIyZj"placezRlZmM0OGFhOWIxMTguMTY=",
"longitude": -80.192017},
"type": "place"}
2.
{"message":
{"bonus_expiration": null,
"store_id": "YjhlMWQ3MDcwN2EzNGMwY2I1NGE5YzVmNDA3ZWRlMGIuMTY=",
"enabled": true, "longitude": -80.197377,
"last_modified": 1474148043976,
"active_fort_modifier": null,
"latitude": 27.146217},
"type": "store"}
3.
{"message":
{"disappear_time": 1480353234,
"meeting_id": "88dedc26aad",
"move_2": null,
"time_until_hidden_ms": 1411382559,
"last_modified_time": 1480352334560,
"encounter_id": "MzIxNTQ1NzIzMzMzMDExOTI5Mg==",
"move_1": null,
"individual_defense": null,
"object_id": 13,
"individual_stamina": null,
"time_detail": -1,
"longitude": -80.19295513708012,
"latitude": 27.141183040207377,
"individual_attack": null},
"type": "object"}
这是我放在一起的 PHP,但是当我将 webhook 发送到 PHP 脚本的地址时它不起作用。任何帮助将不胜感激。
<?php
# MySQL database connection info
$host = 'localhost:3306';
$dbname = 'xxxxxxx';
$user = 'xxxxxxx';
$password = '-------';
$db = new PDO('mysql:host=' . $host . ';dbname=' . $dbname, $user, $password);
# Define Type Variables
$place = 'place';
$store = 'store';
$object = 'object';
# Decide if the WebHook is a place, store, or object
//$input = file_get_contents('mysql_webhook_payload.json'); # Local file for debugging
$input = file_get_contents('php://input'); # POST data from webhook
$payload = json_decode($input, true);
#IF LOOP for type
if ($payload['message']['type'] == $place ) {
$team_id = $payload['message']['team_id'];
$place_points = $payload['message']['place_points'];
$last_modified = $payload['message']['last_modified'];
$latitude = $payload['message']['latitude'];
$guard_object_id = $payload['message']['guard_object_id'];
$enabled = $payload['message']['enabled'];
$place_id = $payload['message']['place_id'];
$longitude = $payload['message']['longitude'];
$sql = "INSERT INTO places (`place_id`, `team_id`, `guard_object_id`, `place_points`, `enabled`, `latitude`, `longitude`, `last_modified`)
VALUE ($place_id, $team_id, $guard_object_id, $place_points, $enabled, $latitude, $longitude, $last_modified)";
}
else if ($payload['message']['type'] == $store ) {
$bonus_expiration = $payload['message']['bonus_expiration'];
$store_id = $payload['message']['store_id'];
$enabled = $payload['message']['enabled'];
$longitude = $payload['message']['longitude'];
$last_modified = $payload['message']['last_modified'];
$active_fort_modifier = $payload['message']['bonus_expiration'];
$latitude = $payload['message']['latitude'];
////missing sql entry
}
else if ($payload['message']['type'] == $object ) {
$disappear_time = $payload['message']['disappear_time'];
$meeting_id = $payload['message']['meeting_id'];
$encounter_id = $payload['message']['encounter_id'];
$longitude = $payload['message']['longitude'];
$last_modified_time = $payload['message']['last_modified_time'];
$move_1 = $payload['message']['move_1'];
$latitude = $payload['message']['latitude'];
$individual_defense = $payload['message']['individual_defense'];
$object_id = $payload['message']['object_id'];
$individual_stamina = $payload['message']['individual_stamina'];
$individual_attack = $payload['message']['individual_attack'];
$time_detail = $payload['message']['time_detail'];
$move_2 = $payload['message']['move_2'];
$sql = "INSERT INTO `object`(`encounter_id`, `meeting_id`, `object_id`, `latitude`, `longitude`, `disappear_time`, `individual_attack`, `individual_defense`, `individual_stamina`, `move_1`, `move_2`, `last_modified`, `time_detail`) VALUES ($encounter_id, $meeting_id, $object_id, $latitude, $longitude, $disappear_time, $individual_attack, $individual_defense, $individual_stamina, $move_1, $move_2, $last_modified, $time_detail)";
}
?>
我可能离这里很远
第一个片段无效,因为它在 place_id
字符串中包含引号 "
。
不是$payload['message']['type']
而是$payoload['type']
。在 type
键之前注意 },
。
当您解决上面的问题时,您可能会遇到 SQL 错误,因为您的插入内容既没有转义也没有引用。你应该使用 PDO's bindParam.
其余代码应该没问题,适合我。
我是从 PHP 开始的,我有一个网络服务器接收 JSON 格式的传入网络挂钩。
Web 挂钩可以根据对象分为 3 种不同的结构。根据 "type":.
将每种不同的格式插入不同的 tablewebhook的3种格式如下。
1.
{"message":
{"team_id": 3,
"place_points": 4000,
"last_modified": 1480297989459,
"latitude": 27.140134,
"guard_object_id": 130,
"enabled": true,
"place_id": "YjliYjRkYzJiZmI0NDIyZj"placezRlZmM0OGFhOWIxMTguMTY=",
"longitude": -80.192017},
"type": "place"}
2.
{"message":
{"bonus_expiration": null,
"store_id": "YjhlMWQ3MDcwN2EzNGMwY2I1NGE5YzVmNDA3ZWRlMGIuMTY=",
"enabled": true, "longitude": -80.197377,
"last_modified": 1474148043976,
"active_fort_modifier": null,
"latitude": 27.146217},
"type": "store"}
3.
{"message":
{"disappear_time": 1480353234,
"meeting_id": "88dedc26aad",
"move_2": null,
"time_until_hidden_ms": 1411382559,
"last_modified_time": 1480352334560,
"encounter_id": "MzIxNTQ1NzIzMzMzMDExOTI5Mg==",
"move_1": null,
"individual_defense": null,
"object_id": 13,
"individual_stamina": null,
"time_detail": -1,
"longitude": -80.19295513708012,
"latitude": 27.141183040207377,
"individual_attack": null},
"type": "object"}
这是我放在一起的 PHP,但是当我将 webhook 发送到 PHP 脚本的地址时它不起作用。任何帮助将不胜感激。
<?php
# MySQL database connection info
$host = 'localhost:3306';
$dbname = 'xxxxxxx';
$user = 'xxxxxxx';
$password = '-------';
$db = new PDO('mysql:host=' . $host . ';dbname=' . $dbname, $user, $password);
# Define Type Variables
$place = 'place';
$store = 'store';
$object = 'object';
# Decide if the WebHook is a place, store, or object
//$input = file_get_contents('mysql_webhook_payload.json'); # Local file for debugging
$input = file_get_contents('php://input'); # POST data from webhook
$payload = json_decode($input, true);
#IF LOOP for type
if ($payload['message']['type'] == $place ) {
$team_id = $payload['message']['team_id'];
$place_points = $payload['message']['place_points'];
$last_modified = $payload['message']['last_modified'];
$latitude = $payload['message']['latitude'];
$guard_object_id = $payload['message']['guard_object_id'];
$enabled = $payload['message']['enabled'];
$place_id = $payload['message']['place_id'];
$longitude = $payload['message']['longitude'];
$sql = "INSERT INTO places (`place_id`, `team_id`, `guard_object_id`, `place_points`, `enabled`, `latitude`, `longitude`, `last_modified`)
VALUE ($place_id, $team_id, $guard_object_id, $place_points, $enabled, $latitude, $longitude, $last_modified)";
}
else if ($payload['message']['type'] == $store ) {
$bonus_expiration = $payload['message']['bonus_expiration'];
$store_id = $payload['message']['store_id'];
$enabled = $payload['message']['enabled'];
$longitude = $payload['message']['longitude'];
$last_modified = $payload['message']['last_modified'];
$active_fort_modifier = $payload['message']['bonus_expiration'];
$latitude = $payload['message']['latitude'];
////missing sql entry
}
else if ($payload['message']['type'] == $object ) {
$disappear_time = $payload['message']['disappear_time'];
$meeting_id = $payload['message']['meeting_id'];
$encounter_id = $payload['message']['encounter_id'];
$longitude = $payload['message']['longitude'];
$last_modified_time = $payload['message']['last_modified_time'];
$move_1 = $payload['message']['move_1'];
$latitude = $payload['message']['latitude'];
$individual_defense = $payload['message']['individual_defense'];
$object_id = $payload['message']['object_id'];
$individual_stamina = $payload['message']['individual_stamina'];
$individual_attack = $payload['message']['individual_attack'];
$time_detail = $payload['message']['time_detail'];
$move_2 = $payload['message']['move_2'];
$sql = "INSERT INTO `object`(`encounter_id`, `meeting_id`, `object_id`, `latitude`, `longitude`, `disappear_time`, `individual_attack`, `individual_defense`, `individual_stamina`, `move_1`, `move_2`, `last_modified`, `time_detail`) VALUES ($encounter_id, $meeting_id, $object_id, $latitude, $longitude, $disappear_time, $individual_attack, $individual_defense, $individual_stamina, $move_1, $move_2, $last_modified, $time_detail)";
}
?>
我可能离这里很远
第一个片段无效,因为它在 place_id
字符串中包含引号 "
。
不是$payload['message']['type']
而是$payoload['type']
。在 type
键之前注意 },
。
当您解决上面的问题时,您可能会遇到 SQL 错误,因为您的插入内容既没有转义也没有引用。你应该使用 PDO's bindParam.
其余代码应该没问题,适合我。