我创建了一个PHP处理程序,从POST请求接收JSON有效内容,然后将其插入到phpMyAdmin的数据库中。我不知道为什么这不起作用。为什么我的json数据没有被插入到mySQL数据库中?
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和有它在自动递增。如果我理解正确,我不需要在该列中插入任何内容,因为它每次都会分配一个数字。或者当我插入其他变量时仍然需要传递它?
停止使用mysql扩展。你的代码是为sql注入打开的。 – Bhavin
好吧我会研究它。任何想法为什么它不工作,因为它是? –
不需要,因为主键是自动增量。用你的错误更新你的问题。并且在代码开始时启动error_reporting(E_ALL),所以如果发生任何其他错误,我们也可以计算出来。 – Bhavin