0

我想像JSON在mysql中一样存储一个php数组。为此,我有meeting_point_jsontype='longtext' 的列。

这是数组:

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

知道我在这里做错了什么吗?

4

5 回答 5

1

试试这条线,而不是你的:

$sql = "UPDATE yami_sub_team SET `meeting_point_json`='".$data."' WHERE `id`='".$subteam_id."';";
于 2012-11-01T12:34:42.530 回答
1

请参阅: $data变量更改与".$data."$subteam_id变量与".$subteam_id."

请记住 sql 查询仅作为字符串发送,而不是其中的变量......并按照您编写 PHP 的所有方式进行。始终用“..”和“..”包装变量

".." 和 '..' 取决于你的带状包装:例如:如果看起来像 $string = mysql_query("SELECT DATA FROM ".$variable.""); 这样,你必须使用 ".." 包装!如果这样 的话$string = mysql_query('SELECT DATA FROM '.$variable.''); ,你必须使用 '..' 包装器!

祝朋友好运

于 2012-11-01T13:41:39.037 回答
0

它应该是这样的:

$sql = "UPDATE yami_sub_team set meeting_point_json = '" . mysql_escape_string($data) . "'where id = $subteam_id";

您可以在此处阅读有关该功能的更多信息:http: //php.net/manual/en/function.mysql-escape-string.php

于 2012-11-01T12:27:54.250 回答
0
$data = "'" . mysql_escape_string(json_encode($_POST['team_meeting_pt'])) . "'";

在第一行更改

于 2012-11-01T12:36:58.990 回答
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....);
}
于 2016-01-13T10:21:49.720 回答