当前位置:Gxlcms > PHP教程 > php存数据到数据库,echo出来的sql可正常在mysql里执行但是放在php中执行却抱错,大神们

php存数据到数据库,echo出来的sql可正常在mysql里执行但是放在php中执行却抱错,大神们

时间:2021-07-01 10:21:17 帮助过:5人阅读

看代码
$title = $_POST["title"];
$metact_t = $_POST["metact_t"];
$acter = $_SESSION["user"];
$department = $_POST["department"];
$metinfo = $_POST["metinfo"];
$jb = $_POST["jb"];
$department_t = $_POST["department_t"];
获得传过来的参数,并作了输出测试没有问题
$title = iconv("utf-8","gbk",strip_tags($title));
$metact_t = iconv("utf-8","gbk",strip_tags($metact_t));
$acter = iconv("utf-8","gbk",strip_tags($acter));
$department = iconv("utf-8","gbk",strip_tags($department));
$metinfo = iconv("utf-8","gbk",strip_tags($metinfo));
$jb = iconv("utf-8","gbk",strip_tags($jb));
$status = iconv("utf-8","gbk",'未解决');
$department_t = iconv("utf-8","gbk",strip_tags($department_t));
$saveMeetingSql = "insert into t_metact(id,title,metact_t,acter,department,metinfo,jb,department_t,status)".
" values('$id','$title','$metact_t','$acter','$department','$metinfo','$jb','$department_t','$status')";
echo ($saveMeetingSql );
转码输出sql如下:
insert into t_metact(id,title,metact_t,acter,department,metinfo,jb,department_t,status) values('2','测试0908','2014-09-09','admin','网络部','ceshi','重大','网络部','未解决')
在sql管理器中可正常插入
php中报错输出错误:ncorrect string value: '\xB2\xE2\xCA\xD409...' for column 'title' at row 1意思应该是说title对应的测试0908不是正常的字符格式,数据库设计字段为varchar长度20,不知道问题出在哪了,望大神们指点


回复讨论(解决方案)

你向数据库发送的是 gbk 编码的串,而数据库默认的字符集并不是 gbk 的
所以数据库无法识别传入的串,因此出错

你的数据库编码是什么?
插入数据和数据编码要一致。

我估计也是编码器的问题

你向数据库发送的是 gbk 编码的串,而数据库默认的字符集并不是 gbk 的
所以数据库无法识别传入的串,因此出错


我转码出来的echo的sql是正常的啊,就是不清楚怎么就向数据库发成gbk的,应该是编码问题但就是不知道问题出在哪,我连接数据库的时候设置的编码utf8

你的数据库编码是什么?
插入数据和数据编码要一致。


数据库是utf8,插入的sql参数我都转过码了,echo的sql执行也没问题

1、在你的代码中并没有数据库操作的函数,所以我不知道你使用的是什么数据库。因此在回复中没有提出建议
2、你对传入的数据都做了形如 $title = iconv("utf-8","gbk",strip_tags($title)); 这样的操作,这就把 utf-8 编码转成了 gbk 编码
3、把错误信息中的 \xB2\xE2\xCA\xD409... 用 php 打印出来
echo "\xB2\xE2\xCA\xD409...";
就是 gbk 编码的 测试09...
4、如果你连接数据库时已经声明了使用 utf8,那么这些 gbk 编码数据是要因不属于 utf-8 范围而报错的

人气教程排行