2012-11-01 140 views
0

数组和商店回报,我想一个PHP阵列作为存储在MySQL JSON。为此我有meeting_point_json列,type ='longtext'。PHP json_encode在MySQL

这里是数组:

Array 
(
    [1] => Array 
     (
      [date] => 23/4/2012 
      [meeting_time] => 23:04 
      [meeting_place] => town hall 
      [venue] => London 
      [opponents] => Tigers 
      [official_incharge] => Mr Putin 
     ) 

    [2] => Array 
     (
      [date] => 23/4/2050 
      [meeting_time] => 13:04 
      [meeting_place] => chief office 
      [venue] => Kenya 
      [opponents] => Peococks 
      [official_incharge] => Mr Black 
     ) 

    [3] => Array 
     (
      [date] => dsad 
      [meeting_time] => sadas 
      [meeting_place] => jjjjj 
      [venue] => jjjj 
      [opponents] => dasds 
      [official_incharge] => asad 
     ) 

) 

这里是PHP代码:

$data = json_encode($_POST['team_meeting_pt']); 
    $sql = "UPDATE yami_sub_team set meeting_point_json = $data where id = $subteam_id"; 
    if(mysql_query($sql)){ 
     exit("Done!"); 
    }else{ 
     die('Something went wrong, changes not saved. Error details: ' . mysql_error()); 
    } 

它应该工作,但取而代之的是,我得到一个错误:

Something went wrong, changes not saved. Error details: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"1":{"date":"23\/4\/2012","meeting_time":"23:04","meeting_place":"town hall","ve' at line 1 

任何想法我在这里做错了什么?

+0

什么的$数据的全部价值? –

+0

如果_POST [''team_meeting_pt]是空的或更糟的是NOT SET? – Svetoslav

+0

@Svetlio或者更糟的是,试图破解他的数据库? :) –

回答

0

看到:与".$data."$subteam_id".$subteam_id."

可变记得SQL查询只发送为字符串,而不是变量中有... 和它做你的所有方式来写PHP $data变量的变化。始终以包裹变量“”和“..”

“”和“..”是取决于你的带包装: 例如: 如果是这样的 $string = mysql_query("SELECT DATA FROM ".$variable.""); 所以,你必须使用“..”包装! 如果这样 $string = mysql_query('SELECT DATA FROM '.$variable.''); 所以,你必须使用“..”包装!

祝你好运的朋友

0

试试这个行,而不是你的:

$sql = "UPDATE yami_sub_team SET `meeting_point_json`='".$data."' WHERE `id`='".$subteam_id."';"; 
+1

仍然倾向于SQL注入。使用'mysql_real_escape_string',或者更确切地说,不要使用已弃用的mysql_ *函数,并用预处理语句选择PDO。 –

0
$data = "'" . mysql_escape_string(json_encode($_POST['team_meeting_pt'])) . "'"; 

变化1号线

0

首先我会用一个准备语句。并将结果绑定到它以避免所有困难的船只。

$conn = new mysqli($servername, $username, $password, $dbname); 
//replaced $data with ? for security reasons 
$sql = "UPDATE yami_sub_team set meeting_point_json = ? where id = $subteam_id"; 
$stmt->$conn_prepare($sql); 
//binds data to the ? 
// the 's' states string is replacing ? 
$stmt->bind_param('s',$data); 
if($stmt->execute()){ 
{ 
    exit("Done!"); 
}else{ 
    die('Something went wrong....); 
}