J'ai créé un gestionnaire PHP pour recevoir une charge JSON à partir d'une requête POST, puis l'insérer dans une base de données dans phpMyAdmin. Je ne sais pas pourquoi cela ne fonctionne pas.Pourquoi mes données json ne sont-elles pas insérées dans la base de données 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"
}
}
Le code PHP Je suis d'un tutoriel en ligne. Le tutoriel est de 2017 donc je suppose que tout est à jour, mais pourtant il ne fonctionne toujours pas:
<?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());
}
?>
je la clé primaire définie sur un int et avoir sur incrémentation automatique. Si je comprends bien, je n'ai pas besoin d'insérer quoi que ce soit dans cette colonne car il va attribuer un numéro à chaque fois. Ou dois-je quand même le passer quand j'insère les autres variables?
arrêt en utilisant des extensions mysql. Votre code est ouvert pour SQL Injection. – Bhavin
D'accord, je vais y regarder. Une idée de pourquoi ça ne marche pas comme ça? –
Non. Vous n'avez pas besoin de passer car la clé primaire est un incrément automatique. Mettez à jour votre question avec votre erreur. Et démarrez error_reporting (E_ALL) au démarrage de votre code, donc s'il y a d'autres erreurs, nous pouvons le comprendre aussi. – Bhavin