2014-12-26 3 views
0

Я работаю в PHP. У меня есть следующие значения, которые выполняются функцией json_encode. Когда я печатаю переменную $ vmndetails, я получил приведенные ниже данные.Вставить значения json_encode в таблицу mysql

[{ 
    "id":"1", 
    "smsid":"4781366", 
    "senderid":"289613638", 
    "textcontent":"Good day reply", 
    "msgdate":"2014-12-17 13:04:20", 
    "charsetval":"UTF-8", 
    "userid":"", 
    "reprtdate":"2014-12-17 11:04:21" 
}, 
{ 
    "id":"7", 
    "smsid":"4781467", 
    "senderid":"289761363", 
    "textcontent":"Good", 
    "msgdate":"2014-12-17 13:21:18", 
    "charsetval":"UTF-8", 
    "userid":"", 
    "reprtdate":"2014-12-17 11:21:21" 
}] 

Мне нужно вставить эти значения в таблицу mysql.

Так что я написал функцию ниже.

mysql->query("INSERT INTO twowaysms(id,smsid,senderid,textcontent,msgdate,charsetval,userid,reprtdate) VALUES "."(" . implode(",",$vmndetails) . ")"); 

Но я получаю сообщение об ошибке, что «список значений Вставка не соответствует список столбцов: 1136 Количество столбцов не совпадает с количеством значений в строке 1'.I видел тот же вопрос много здесь, но я не могу найти solution.How решить этот вопрос, пожалуйста кто-нибудь мне помочь ..

+0

убедитесь, что ваш '$ vmndetails' переменные содержит значение совпадающий с общим числом столбцов –

+0

** [implode] (http://php.net/manual/ en/function.implode.php) ** объединить элементы массива, а не массивы элементов объекта. – Ranjith

ответ

1

Вы холодопроизводительность одномерных массивов данных, так что попробуйте, как это? -

// http://ideone.com/xX2HNU 
$vmndetails = '[{"id":"1","smsid":"4781366","senderid":"289613638","textcontent":"Good day reply","msgdate":"2014-12-17 13:04:20","charsetval":"UTF-8","userid":"","reprtdate":"2014-12-17 11:04:21"},{"id":"7","smsid":"4781467","senderid":"289761363","textcontent":"Good","msgdate":"2014-12-17 13:21:18","charsetval":"UTF-8","userid":"","reprtdate":"2014-12-17 11:21:21"}]'; 

$vmndetails = json_decode($vmndetails, true); 
$values = ""; 
foreach($vmndetails as $v) { 
    $values .= "(".implode(", ", $v)."), " 
} 
$values = rtrim($values, ", "); 

mysql->query("INSERT INTO 
    wowaysms(id,smsid,senderid,textcontent,msgdate,charsetval,userid,reprtdate) 
    VALUES {$values} "); 
+0

Большое спасибо за ответ. Его работа. Есть небольшая проблема, я дал тип данных некоторых деталей как varchar в таблице, поэтому одинарные кавычки должны быть там для вставки значений. Когда я повторяю значения запроса вставки, нет имея одинарные кавычки. Что мы можем сделать для этого? –

+0

Да. Я получил его правильно. Я отредактировал ваш код: $ values. = "('" .implode ("', '", $ v). "')"; Он отлично работает. Большое вам спасибо. –

+0

@ ElizabethJoshy вы должны принять этот ответ, если он вам поможет. –

Смежные вопросы