"您的SQL语法中有错误"在8777次中出现70次

Ste*_*tay -1 php mysql mysql-error-1064

所以我有这个脚本需要一堆json文件并将它们发送到我的数据库.该脚本适用于8777个文件,但对于70个文件,我得到以下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 'Shea', '', '190', '1981-4-30', 'Right', '106', '13', '25', '65', '39', '64', '61' at line 1
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的循环,我为长查询道歉:

For($id=1; $id<=205600; $id++)
{
if (file_exists('data/players/'.$id.'.json'))
    {
        //read json file
        $json_file = file_get_contents('data/players/'.$id.'.json');
        $file_data = json_decode($json_file, true);

        //my super long query
        $query =  'INSERT INTO `db`.`table` (`id`, `first_name`, `last_name`, `common_name`, `height`, `dob`, `foot`, `club_id`, `league_id`, `nation_id`, `attribute1`, `attribute2`, `attribute3`, `attribute4`, `attribute5`, `attribute6`, `rare`, `rating`, `type`) VALUES (\''.$id.'\', \''.$file_data['Player']['FirstName'].'\', \''.$file_data['Player']['LastName'].'\', \''.$file_data['Player']['CommonName'].'\', \''.$file_data['Player']['Height'].'\', \''.$dob.'\', \''.$file_data['Player']['PreferredFoot'].'\', \''.$file_data['Player']['ClubId'].'\', \''.$file_data['Player']['LeagueId'].'\', \''.$file_data['Player']['NationId'].'\', \''.$file_data['Player']['Attribute1'].'\', \''.$file_data['Player']['Attribute2'].'\', \''.$file_data['Player']['Attribute3'].'\', \''.$file_data['Player']['Attribute4'].'\', \''.$file_data['Player']['Attribute5'].'\', \''.$file_data['Player']['Attribute6'].'\', \''.$file_data['Player']['Rare'].'\', \''.$file_data['Player']['Rating'].'\', \''.$file_data['Player']['ItemType'].'\');';
        mysql_query($query);

        //record loop status
        if (mysql_error())
        {
            $error = mysql_error();
            echo $error.'<br/>';
            $errors ++;
        }
        else
        {
            $entries ++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

那么我该如何解决这个错误呢?

Mic*_*son 5

mysql_real_escape_string在将变量添加到查询之前使用它们:

$commonName = mysql_real_escape($file_data['Player']['CommonName']);
Run Code Online (Sandbox Code Playgroud)

然后$commonName在您的查询中使用.

虽然你真的应该使用PDO.有关介绍,请参阅PDO的第一步.

  • 一点一点地做这一切是非常烦人的.最好的计划是使用PDO. (2认同)