2013-08-06 57 views
-2

我有2個PHP數組,我編碼成與詹姆斯json_encode$mysqli->real_escape_string。現在,這兩個數組json_encode後的輸出是:PHP的mysqli查詢後json_encode給出了錯誤

{\"arg1\":\"char*\",\"arg2\":\"char*\"}{\"arg1\":\"abc\",\"arg2\":\"bca\"} 

然後,我插入到MySQL這與查詢。但我得到以下錯誤:

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 '\"arg1\":\"char*\",\"arg2\":\"char*\"}, {\"arg1\":\"abc\",\"arg2\":\"bca\"})' at line 1 

我把這個json到mysql的方式是什麼?

MySQL查詢

"UPDATE test_info SET java_auto_frame=$frame_auto, java_manual_frame=$frame_manual, java_testcase=$testcases, param_types=$param_types, param_examples=$param_examples WHERE qid=$qid" 

其中,$ param_types是第一JSON編碼陣列和$ param_examples是第二個。

+4

你的SQL查詢在哪裏? –

+1

編輯我的問題。 – Rishi

+0

顯然你的'json'需要被正確地轉義出來,如果你打算把它粘貼到這樣的查詢中...... – NDM

回答

2

寫你的查詢關鍵詞,比如PDO的這個

"UPDATE test_info SET java_auto_frame='$frame_auto', java_manual_frame='$frame_manual', java_testcase='$testcases', param_types='$param_types', param_examples='$param_examples' WHERE qid='$qid'" 
1

使用準備語句(http://php.net/manual/en/book.pdo.php)。 類似這樣的:

$dbh = new PDO("mysql:host=localhost;dbname=database;","root",""); 
$sql = "UPDATE test_info SET java_auto_frame=:frame_auto, java_manual_frame=:frame_manual, java_testcase=:testcases, param_types=:param_types, param_examples=:param_examples WHERE qid=:qid"; 
$sth = $dbh->prepare($sql); 
$sth->execute(array(
    'frame_auto' => $frame_auto, 
    'frame_manual' => $frame_manual, 
    'testcases' => $testcases, 
    'param_types' => $param_types, 
    'param_examples' => $param_examples, 
    'qid' => $qid 
)); 
+0

雖然PDO是一種替代解決方案,但OP正在詢問關於MySQLi的實現。 – Raptor