【发布时间】:2017-04-09 06:47:01
【问题描述】:
我创建了一个 PHP 处理程序来接收来自 POST 请求的 JSON 有效负载,然后将其插入到 phpMyAdmin 中的数据库中。我不确定为什么这不起作用。
JSON:
payload = {
"version":"1.0",
"event":"video_recorded",
"data":{
"videoName":"vs1457013120534_862",
"audioCodec":"NellyMoser ASAO",
"videoCodec":"H.264",
"type":"FLV",
"orientation":"landscape",
"id":"0",
"dateTime":"2016-03-03 15:51:44",
"timeZone":"Europe/Bucharest",
"payload":"111.111.111.11",
"httpReferer":"http://site_from_where_video_was_recorded.com"
}
}
我从在线教程中获得的 PHP 代码。该教程是从 2017 年开始的,所以我假设一切都是最新的,但它仍然无法正常工作:
<?php
/* db variables */
$dbhost = 'localhost';
$dbname = 'name_db';
$dbuser = 'user_db';
$dbpass = 'pass_db';
/* grab the json */
$data = $_POST['payload'];
/* put json into php associative array */
$data_array = json_decode($data);
/* store in PHP variables */
$ip_address = $data_array['data']['payload'];
$vid_name = $data_array['data']['videoName'];
$date_time = $data_array['data']['dateTime'];
$time_zone = $data_array['data']['timeZone'];
/* connect to mysql db */
$con = mysql_connect($dbuser, $dbpass, $dbhost) or die('Could not connect: ' . mysql_error());
/* select the specific db */
mysql_select_db($dbname, $con);
/* insert the values into the db */
$sql = "INSERT INTO ip_and_videos(IpAddress, VideoName, DateTime, Timezone) VALUES('$ip_address','$vid_name','$date_time','$time_zone')";
if(!mysql_query($sql,$con))
{
die('Error : ' . mysql_error());
}
?>
我将主键设置为 int 并使其自动递增。如果我理解正确,我不需要在该列中插入任何内容,因为它每次都会分配一个数字。还是在 INSERT 其他变量时还需要传递它?
【问题讨论】:
-
停止使用 mysql 扩展。您的代码对 sql 注入开放。
-
好的,我会调查的。知道为什么它不能按原样工作吗?
-
没有。您不必通过,因为主键是自动递增的。用您的错误更新您的问题。并在代码的开头启动 error_reporting(E_ALL) 以便如果发生任何其他错误,我们也可以解决。
-
老实说,我什至不知道如何解决这个问题,php 新手。错误会显示在 chrome 上的开发工具控制台中吗?
-
@ChaceMcguyer:请检查答案并让我们知道...还要注意您的查询,让它呼吸,因为您在它的部分之间缺少一些空格 -> ip_and_videos( 和 VALUES(
标签: php mysql json database webhooks