【PHP】Debug总览表

一、MySQL相关

1、mysql error Number 1005之errno150解决

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)错误。

主键和外键的字符编码不一致 ,改正对应的数据库存储引擎和字符编码即可!
-----------------------------------------------
CREATE TABLE IF NOT EXISTS T_AREA(
AREA_ID INT(4) NOT NULL AUTO_INCREMENT COMMENT 'ID',
AREA_NAME varchar(20) UNIQUE NOT NULL COMMENT '区域名',
SN varchar(20) UNIQUE NOT NULL COMMENT '区域编号',
PRIMARY KEY (AREA_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-----------------------------------------------
加上这个ENGINE=InnoDB DEFAULT CHARSET=utf8;  你的不一定是InnoDB 类型!

2、解决 phpMyAdmin 中文乱码的问题

    以下四点即可实现全站utf-8编码,而且在数据库中也不会有中文乱码

  1. 网页文件head设置编码<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  2. PHP页面在保存的时候使用utf-8编码保存,可以用记事本或convertz802转换文件

  3. 在MYSQL中新建数据库的时候数据库 选择utf-8_general_ci字符集为数据库连接校对,以及整理的字符集

    • 库里面 表table的 整理 设置为 utf-8_general_ci

    • 表里面的每个字段的 整理 都设置为 utf-8_general_ci

  4. 在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

【PHP】Debug总览表_第1张图片

    2、下一步我们解决php文件的编码问题,如果你在eclipse中开发php web应用,那么直接右击你的项目名称,出来选项框,选择“属性”一栏,在文件编码中选择utf-8类型,这样你在该项目中新建的文件都继承了utf-8类型。

【PHP】Debug总览表_第2张图片
    3、在每个要显示在页面的文件中的head设置编码<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />



    4.在PHP连接数据库的时候,也就是mysql_connect()之后加入 mysql_query("set names 'utf8' ");

【PHP】Debug总览表_第3张图片

    好了~现在你就可以自由输入中文了,页面,数据库中都显示的不是乱码了,解决了~Good Luck

    设置编码的几种方式:

  • phpmyadmin主界面可以设置编码;

  • mysql控制台:

    • 查询 set names 'utf8';

    • 创建数据库 create databases dbname character set utf8;

    • 创建表 create table name()default charset=utf8;

  • 通过配置文件修改:\mysql\db.opt

    • 表编码不指定,默认就是数据库编码,表编码与数据库编码设置一致就不会乱码。


二、外接平台相关

1、【新浪】使用php的CURL函数curl_init初始化一个新的会话时出错

    使用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配置成功。

三、LAMP相关

问题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配置成功。


你可能感兴趣的:(【PHP】Debug总览表)