在PHP中解码json时遇到问题

时间:2013-01-29 16:42:18

标签: php jquery ajax json

我正在尝试将3位整数数组插入MySQL数据库(例如'301','302'等)。该数组使用jQuery,Ajax和JSON传递到PHP脚本中。这一点(通过'console.log'函数判断)似乎工作正常。当我尝试解码JSON字符串时,问题出现在另一端。

我希望数组中的每个项目都进入一个单独的列,但目前插入到列中的所有项目都是数字“0”。

代码如下:

jQuery的:

var modules

$('#createbutton').click(function(){
 $('#l3 :checkbox:checked').each(function(i){
  var l3modules = $(this).attr('value');
  modules.push(l3modules);
  });

var modulestransmit = JSON.stringify(modules);
console.log(modulestransmit);

$.ajax({
       url: "newaccount.php",
       type: "POST",
       data: { modules: modulestransmit },
     });
 });

PHP:

 $modules = $_REQUEST['modulestransmit']);
 $insertmodules = json_decode($modules, true);

 if(mysql_query("INSERT INTO level3 (mod1, mod2) VALUES ('$insertmodules[0]', '$insertmodules[1]')")) {
  echo "Successfully inserted";
 }
 else {
  echo "Insertion Failed";
 }

数据库中的结果是:

mod1:0

mod2:0

1 个答案:

答案 0 :(得分:4)

您正在使用模块作为请求中的参数名称而不是modulestransmit,因此将PHP的第一行更改为

 $modules = $_REQUEST['modules'];

你还需要在字符串中的变量名称周围加上大括号(在PHP中用双引号引用数组时至关重要)。

"INSERT INTO level3 (mod1, mod2) VALUES ('{$insertmodules[0]}', '{$insertmodules[1]}')"

那应该这样做。