mysql error Number 1005 can't creat table'\test\#sql-640_1.frm'(errno:150)
三种可能问题:外键和被引用外键类型不一样,比如integer和double找不到要被引用的列表的字符编码不一样我中的就是第三种情况,在administrator里根本看不出表的字符编码,完全一样的列类型定义就是出现 mysql error Number 1005
can't creat table'\test\#sql-640_1.frm'(errno:150)错误。
以下四点即可实现全站utf-8编码,而且在数据库中也不会有中文乱码:
网页文件head设置编码<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
PHP页面在保存的时候使用utf-8编码保存,可以用记事本或convertz802转换文件
在MYSQL中新建数据库的时候数据库 选择utf-8_general_ci字符集为数据库连接校对,以及整理的字符集
库里面 表table的 整理 设置为 utf-8_general_ci
表里面的每个字段的 整理 都设置为 utf-8_general_ci
在PHP连接数据库的时候,也就是mysql_connect()之后加入
mysql_query("set names 'utf8' ");//注意是utf8,不是utf-8
如果你的网页编码是gb2312,那就是 SET NAMES GB2312。但编辑员强烈推荐网页编码、MySQL数据表字符集、PHPmyAdmin都统一使用UTF-8。
下面有图片显示步骤:
1、在phpMyAdmin中新建数据库,选择整理以及Mysql连接校对的字符集都调为utf-8_general_ci
2、下一步我们解决php文件的编码问题,如果你在eclipse中开发php web应用,那么直接右击你的项目名称,出来选项框,选择“属性”一栏,在文件编码中选择utf-8类型,这样你在该项目中新建的文件都继承了utf-8类型。
3、在每个要显示在页面的文件中的head设置编码<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4.在PHP连接数据库的时候,也就是mysql_connect()之后加入 mysql_query("set names 'utf8' ");
好了~现在你就可以自由输入中文了,页面,数据库中都显示的不是乱码了,解决了~Good Luck
设置编码的几种方式:
phpmyadmin主界面可以设置编码;
mysql控制台:
查询 set names 'utf8';
创建数据库 create databases dbname character set utf8;
创建表 create table name()default charset=utf8;
通过配置文件修改:\mysql\db.opt
表编码不指定,默认就是数据库编码,表编码与数据库编码设置一致就不会乱码。
使用php的CURL函数curl_init初始化一个新的会话时出现以下错误:
Fatal error: Call to undefined function curl_init() in D:\apache2\htdocs\getinfo.php on line 8
出现此错误的原因是因为服务器没有配置curl扩展。
在PHP中配置并开启CURL的方法如下:
在php安装目录下的ext目录里找到 php_curl.dll 文件。
找到php目录下的 libeay32.dll和ssleay32.dll文件。
把php_curl.dll、libeay32.dll、ssleay32.dll 、php5ts.dll复制到 %windir%/system32 (一般是C:\Windows\system32\)下
打开php配置文件php.ini,找到extension=php_curl.dll把前面的分号去掉
重新启动apache或IIS服务即可。
启动成功后,可以运行phpinfo();函数查看相关php配置信息,找到以下信息,说明CURL配置成功。
问题1:php访问mysql,Call to undefined function mysql_pconnect()
1 、打开mysql拓展。
php.ini里面;extension=php_mysql.dll去掉前面的分号.
2、WINDOWS系统下,需要将PHP/libmysql.dll和php5.dll 拷贝至:windows/system32下。
问题2:nginx站点编码设置
vi /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
charset utf-8;
。。。
}
问题3:Class 'PDO' not found in ...
php.ini里面;extension=php_pdo.dll去掉前面的分号.
问题4:PDO中文乱码
$dbh = "mysql:host=xxx.xxx.xxx.xxx;dbname=xxDB";
$db = new PDO($dbh, 'user', 'password');
$db->exec("SET CHARACTER SET UTF8");
问题5:mysql_pconnnect中文乱码
$gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) or die( 'Could not open connection to server' ); @mysql_query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary",$gaSql['link']);
问题6:PHP Error Class 'SoapClient' not found
1、安装soap模块
2、windows下 php.ini 打开 extension=php_soap.dll ,linux 下打开extension=soap.so。
重启php_cgi
问题7:PHP Warning: file_put_contents(/var/www/xxx) : failed to open stream: Permission denied in
文件夹权限问题,用 chmod -R 0777 /var/www
【1】mysql_query();参数中字段名需要添加引号
$sql = mysql_query("insert into tb_info(type,title,content,linkman,tel,edate) values ('$type','$title','$content','$linkman','$tel','$edate')"); if ($sql){ echo "<script>alert('恭喜您,信息发布成功!');window.location.href='release.php';</script>"; }else{ echo "<script>alert('对不起,信息发布失败!');history.back();</script>"; }
问题说明:关于这个问题,我都不是很明白。最开始,'$type','$title','$content','$linkman','$tel','$edate'都 没有加上引号。zend studio里面也没有提示语法错误,但是运行的时候,总是提示“对不起,信息发布失败!”在网上搜了半天没找到好的方法,还是同事提醒我,在变量前后加 上引号试试。果然加上引号之后,提示“恭喜您,信息发布成功!”呵呵,估计这个是规范写法吧。具体原因我就不清楚了。待研究。
【2】关于单词拼写问题
问题说明:这个问题说小不小,说大不大。糟糕的是,我总是很容易忽略。每次运行不成功的时候,我总是找不出拼错的单词,直到同事指出。但奇怪的是,在我写 js脚本或者CSS样式时,很快就能发现错误单词所在,但是一遇到PHP,我就晕菜了。不过,这也说明经验不足,还没有足够的感觉吧。继续努力吧!(不过 我真是数次为这个问题难为情啊,希望自己以后能更仔细!)
【3】关于当前时间的存储问题
【4】当mysql数据库的一个表中存在char和varchar两种字段类型且char的长度大于4时,表中的所有char都将自动转换成varchar
【5】使用php的CURL函数curl_init初始化一个新的会话时出现以下错误
Fatal error: Call to undefined function curl_init() in D:\apache2\htdocs\getinfo.php on line 8
出现此错误的原因是因为服务器没有配置curl扩展。
在PHP中配置并开启CURL的方法如下:
1.在php安装目录下的ext目录里找到 php_curl.dll 文件。
2.找到php目录下的 libeay32.dll和ssleay32.dll文件。
3.把php_curl.dll、libeay32.dll、ssleay32.dll 、php5ts.dll复制到 %windir%/system32 (一般是C:\Windows\system32\)下
4.打开php配置文件php.ini,找到extension=php_curl.dll把前面的分号去掉
5.重新启动apache或IIS服务即可。
启动成功后,可以运行phpinfo();函数查看相关php配置信息,找到以下信息,说明CURL配置成功。