Php JSON数据的所有值都不会插入MySQL数据库(对于UTF-8字符)
我从一个使用JSON的UTF-8数据库中得到一个文本,它现在就在一个文件中。当我打印数据时,它是: ت 但当我将其插入数据库时,会出现以下错误: 插入错误:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near的正确语法�在1号线的 这是我的密码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
<?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');