SQL语法错误定界符

时间:2015-04-07 20:42:03

标签: mysql sql json

我在运行查询时遇到问题,只是想知道有人能指出我的问题。我想我知道是什么导致了它,但不知道如何解决它。

我有一个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();
}

?>

0 个答案:

没有答案