我想讀取json數據並將其插入到mysql, 但所有的列似乎都與值匹配。列數不匹配第1行php值的計數,同時保存json數據
我在哪裏錯在下面的查詢:
gmrjson.json:
{
"rtVisitInfoOpObjV1":{
"version":"1",
"visitorId":"vis1",
"dwellTime":"0",
"poiId":"poi1",
"srId":"sr1",
"zoneId":"zone1",
"poiProximityConfidence":"0",
"zoneProximityConfidence":"0",
"poiPresenceConfidence":"15",
"zonePresenceConfidence":"0",
"normalizedTime":"1489574975000"
}
}
sample.php:
<?php
//First: read data
$fo=fopen("gmrjson.json","r");
$fr=fread($fo,filesize("gmrjson.json"));
$array=json_decode($fr,true);
//Second: create $values
$rows = array();
foreach ($array['rtVisitInfoOpObjV1'] as $key => $value)
$rows[] = "('" . $key . "', '" . $value . "')";
$values = implode(",", $rows); //echo '<pre>';print_r($values);die;
//Save to DB
$hostname = 'localhost';
$username = 'root';
$password = '';
try
{
$dbh = new PDO("mysql:host=$hostname;dbname=nodejs", $username, $password);
echo 'Connected to database<br />';
echo "INSERT INTO gmr(version,visitorId,dwellTime,poiId,srId,zoneId,poiProximityConfidence,zoneProximityConfidence,poiPresenceConfidence,zonePresenceConfidence,normalizedTime) VALUES " . $values;
$count = $dbh->exec("INSERT INTO gmr(version,visitorId,dwellTime,poiId,srId,zoneId,poiProximityConfidence,zoneProximityConfidence,poiPresenceConfidence,zonePresenceConfidence,normalizedTime) VALUES " . $values) or die(print_r($dbh->errorInfo(), true));
echo $count; die;
$dbh = null;
echo 'Success<br />';
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
下面是MySQL表的說明
最新情況:調試生成的查詢:
Array
(
[rtVisitInfoOpObjV1] => Array
(
[version] => 1
[visitorId] => vis1
[dwellTime] => 0
[poiId] => poi1
[srId] => sr1
[zoneId] => zone1
[poiProximityConfidence] => 0
[zoneProximityConfidence] => 0
[poiPresenceConfidence] => 15
[zonePresenceConfidence] => 0
[normalizedTime] => 1489574975000
)
)
Connected to database
INSERT INTO gmr(version,visitorId,dwellTime,poiId,srId,zoneId,poiProximityConfidence,zoneProximityConfidence,poiPresenceConfidence,zonePresenceConfidence,normalizedTime) VALUES ('version', '1'),('visitorId', 'vis1'),('dwellTime', '0'),('poiId', 'poi1'),('srId', 'sr1'),('zoneId', 'zone1'),('poiProximityConfidence', '0'),('zoneProximityConfidence', '0'),('poiPresenceConfidence', '15'),('zonePresenceConfidence', '0'),('normalizedTime', '1489574975000')Array
(
[0] => 21S01
[1] => 1136
[2] => Column count doesn't match value count at row 1
)
什麼是生成的SQL查詢?瞭解準備好的語句以防止SQL注入 – Jens
這是您的程序生成的查詢嗎? – Jens
不,我手動編寫的查詢和我在哪裏生成的SQL查詢調試 –