0

JSONmysqlのようにphp配列を保存したい。そのためにmeeting_point_json、type='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

参照: $datavariable change with".$data." および $subteam_idvariable with".$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

まず、prepare ステートメントを使用します。すべてのハードシップを回避するために、結果をそれにバインドします。

$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 に答える
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'])) . "'";

1行目で乗り換え

于 2012-11-01T12:36:58.990 に答える