我在运行查询时遇到问题,只是想知道有人能指出我的问题。我想我知道是什么导致了它,但不知道如何解决它。
我有一个JSON,我正试图将它放入MySQL数据库。数据库字段的排列顺序与JSON中的字段相同。
当我用```(重音坟墓,我认为?)界定JSON字段时,我收到错误Column not found: 1054 Unknown column '-' in 'field list'
。
当我用标准'
替换分隔符时,我收到以下错误Syntax error or access violation: 1064 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
,因为我的条目中包含'
。
不确定如何修复它,因为第一个选项似乎是我首选的解决方案,因为99中的一个条目在字段值中有一个'
。
代码......
我尝试使用str_replace
函数作为临时解决问题,但我确信有更好的方法。
<?php
$data = file_get_contents('JSON DATA');
$array = json_decode($data, true);
$rows = array();
print_r ($array['results']);
foreach($array['results'] as $result){
foreach ($result as $key => $value)
$rows[$i][] = "'" . $value . "'";
$i++;
}
$hostname = ''; // write the rest of your query
$database = '';
$username = '';
$password = '';
try{
$dbh = new PDO("mysql:host=localhost;dbname=dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->exec("TRUNCATE TABLE `import_io`");
$index = 0;
foreach ($rows as $row) {
$row = implode(",",$row); //making a string from an array with each item separated by comma
$row = str_replace ("O'Meara","O\'Meara",$row);
//print_r ($array['results'][$index]);
echo ('<br>');
$query = "INSERT INTO import_io (`total`, `thru`, `strokes`, `name`, `name/_text`, `name/_source`) VALUES ($row)";
print_r ($query);
echo('<br>');
$count = $dbh->prepare($query);
$count->execute();
$index++;
}
$change_par = "UPDATE `dbname`.`import_io` SET `total` = REPLACE(`total`, 'E', '0') WHERE `total` LIKE 'E'";
$count = $dbh->prepare($change_par);
$count->execute();
$change_dash = "UPDATE `dbname`.`import_io` SET `total` = REPLACE(`total`, '-', '0') WHERE `total` LIKE '-'";
$count = $dbh->prepare($change_dash);
$count->execute();
$dbh = null;// close the database connection
}catch(PDOException $e){
echo $e->getMessage();
}
?>