2016-03-05 4 views
3

Я пытаюсь сделать функциональность, когда я отправляю Имя и Возраст с использованием ajax. То же самое собирает PHP, а затем сохраняется до DB. Я думаю, что делаю это правильно, но данные не сохраняются в базе данных. Кто-нибудь может мне помочь?Данные Json не сохранены в DB в PHP

HTML

<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $('button').click(function(){ 
     $.ajax({ 
      url: 'addData.php', 
      type: 'POST', 
      dataType: "json", 
      data: { 
       name: $('#name').val(), 
       age: $('#age').val(), 
      } 
     }) 
    }); 
}); 
</script> 
</head> 
<body> 
<input id="name" type="text" /> 
<input id="age" type="text" /> 
<button>Click</button> 
</body> 
</html> 

PHP

<?php 

//Parameters for connection 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "test1"; 

//Reading json 
$data_back = json_decode(file_get_contents('php://input')); 

// set json string to php variables 
$name = $data_back->{"name"}; 
$age = $data_back->{"age"}; 

// Create Connection 
$conn = new mysqli($servername, $username, $password, $dbname); 

//Creating Query 
$sql = "INSERT INTO table1 (name, age) VALUES ($name, $age)"; 

//Running Query 
$conn->query($sql); 

//Closing Connection 
$conn->close(); 

?> 

ОШИБКА

enter image description here

+1

Вы можете поделиться своей ошибкой с консоли.? –

+0

Вы хотите параметризовать свой запрос, просто вставив $ name и $ age в запрос, вы получите недопустимый SQL (и хороший шанс для кого-то вставить свой потенциально вредоносный SQL) –

+0

@ K.Uzair - поделился ею! – Deadpool

ответ

1

Несмотря на то что вы отправляете данные с jquery как json, php все еще воспринимает его как объект $ _POST. Таким образом, это должно работать:

$name = $_POST['name']; 
$age = $_POST['age']; 
+1

Это сделало это для я ...;) – Deadpool

0

Я считаю, что это правильный путь, чтобы получить доступ поста данных json_decode

$name = $data_back->name; 

Я также рекомендую посмотреть на подготовленные операторы для выполнения запросов к базе данных ... Хорошо, я настоятельно рекомендую вам взглянуть на него.

Редактировать: Возможно, попробуйте также: Замените файл_get_contents() на $_POST;

+0

Bro .... проверили. Значения не добавлены в таблицу db. – Deadpool

+0

Вы также можете сделать 'json_decode ($ data, true) ', чтобы вернуть ассоциативный массив следующим образом:' $ name = $ json ['name']; ' – jaggedsoft

+1

@Peterson, что представляет собой журнал ошибок sql? –

1

Я думаю, что ваш объект $ data_back пуст из-за ошибок в разборе данных по функции json_decode. Вы должны попытаться использовать var_dump ($ data_back); Выход; после json_decode или более сложных методов, таких как отладка.

+0

Да, я получал пустые строки, вставленные +1 для этого анализа. – Deadpool

Смежные вопросы