Php JSON数据的所有值都不会插入MySQL数据库(对于UTF-8字符)

Php JSON数据的所有值都不会插入MySQL数据库(对于UTF-8字符),php,mysql,json,database,utf-8,Php,Mysql,Json,Database,Utf 8,我从一个使用JSON的UTF-8数据库中得到一个文本,它现在就在一个文件中。当我打印数据时,它是: ت 但当我将其插入数据库时,会出现以下错误: 插入错误:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near的正确语法�在1号线的 这是我的密码 <?php header('Content-Type: application/json; charset=utf-8'); $con = mysql_connect("localhost","bbbbbbb","bb

我从一个使用JSON的UTF-8数据库中得到一个文本,它现在就在一个文件中。当我打印数据时,它是:

ت

但当我将其插入数据库时,会出现以下错误:

插入错误:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near的正确语法�在1号线的

这是我的密码

<?php 
header('Content-Type: application/json; charset=utf-8');
$con = mysql_connect("localhost","bbbbbbb","bbbbbbb");
mysql_select_db("db", $con);
if(file_exists('./json/file.json')){
    $jsondata = file_get_contents('./json/file.json');
    $data = json_decode($jsondata, true);
    foreach ($data['nodes'] as $node){
        $data_element = $node['node'];
        $title = $data_element['title'];
        $summary = $data_element['summary'];
        $body = $data_element['body'];
        $id = $data_element['id'];
        print $title."\n";
        $insert = "INSERT INTO main(title) VALUES ($title)";
        mysql_query($insert) or die("Insertion Error: ". mysql_error());
    }
}
else 
    print "File doesn't exist";

数据库连接也需要知道它是utf8<代码>mysql\u集\u字符集('utf8')

与不推荐使用的mysql\u-con不同,您应该看看。

使用这个

$mysqli = new mysqli("localhost","root","","your_db_name");

$mysqli->query("SET NAMES 'utf8'");

$mysqli->query(“设置字符集utf8”)

尽管@ericwenn和@SahilManchal提出了有效的观点,但直接的错误是未能在
中引用字符串。。。值($title).

不要盲目地将字符串放入查询中

这将起作用,但不安全:
。。。值(“$title”)…
。它受到一种叫做“sql注入”的黑客攻击。请参见
real\u escape\u string

另外,在连接mysqli之后,使用


这比
设置名称

完美的答案更可取,但请您编辑此内容以包含不推荐使用的mysql扩展的警告。我尝试过它,但它给了我此错误
错误:(1064)您的SQL语法有错误;通过将插入查询修改为
$insert=“insert INTO main(title)VALUES('$title')”,检查与MySQL服务器版本对应的手册,以了解在第1行使用的正确语法成功了。thanksI无法理解它是如何工作的,如果您执行此查询——“插入到主(标题)值中(插入到主(标题)值中(插入到主(标题)值中”)。它易受sql注入攻击吗?
$insert=“插入主(标题)值($title)”根本不起作用——因为
$title
@RickJames周围没有引号,这正是我想你能做的,但在这种情况下,每个请求都会执行此查询,因此10000个请求将等于20000个额外查询。最好将sql server配置为全局使用,而不是每次都设置。这在config.php中只设置一次,在页面中包含一次config。虽然此代码片段可以解决这个问题,但确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因。如果我请求您的页面10次,它将执行多少次?我尝试过,但它给了我以下错误
错误:(1064)您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行使用的正确语法,我尝试了它,但它给了我这个错误:
error:(1064)您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第1行“دنگاهاملی”(عله㶍ه㶍م)附近使用的正确语法
$mysqli->set_charset('utf8');