zoukankan      html  css  js  c++  java
  • php和mysql学习问题笔记

    1、Undefined index: pwd in E:xampphtdocsphpbase2elite12source egister.php on line 6

    这是一个警告,表示数组下标为'pwd'未定义就在使用了
    修改代码:isset($_POST['username'])?$_POST['username']:"";2、

    2、防止sql注入

    // 检查客户端提交的数据中是否含有非法字符
    function checkIllegalWord ()
    {
        // 定义不允许提交的SQL命令及关键字
        $words = array();
        $words[]    = " add ";
        $words[]    = " count ";
        $words[]    = " create ";
        $words[]    = " delete ";
        $words[]    = " drop "; 
        $words[]    = " from ";
        $words[]    = " grant ";
        $words[]    = " insert "; 
        $words[]    = " select ";
        $words[]    = " truncate ";
        $words[]    = " update ";
        $words[]    = " use ";
        $words[]    = "-- ";
        
        // 判断提交的数据中是否存在以上关键字, $_REQUEST中含有所有提交数据
        foreach($_REQUEST as $strGot) {
            $strGot = strtolower($strGot); // 转为小写
            foreach($words as $word) {
                if (strstr($strGot, $word)) {
                    echo "您输入的内容含有非法字符!";
                    exit; // 退出运行
                }
            }
        }// foreach
    }
    
    checkIllegalWord(); // 检查非法字符

    3、如何在phpmyadmin中新insert一条新数据,以及解决中文显示乱码的问题;

    先选中你要插入的表格,再在sql中输入下面这条语句:

    insert into t_user(f_username, f_password, f_name, f_email) values ('admin1', md5('123456'), '管理员', 'bob@google.com');


    但这时你会发现中文显示“??”,乱码,解决办法:

    进入字段--->选择乱码的变量,点击修改--->将其更改成”utf8_general_ci“,再向表中插入中文数据,不显示乱码了。

    还有一种办法就是:

    在创建表的时候应该先添加字段的编码,在字段类型后面添加”CHARACTER SET utf8 COLLATE utf8_general_ci“,比如SQL语句

    create table webgrades(
        班级 varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci,
        学号 varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci,
        姓名 varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci,
        成绩 int (3));

    那么CHARACTER SET utf8 COLLATE utf8_general_ci是干什么用的呢?

    如果表的结构指定了CHARACTER SET X和COLLATE Y,那么采用字符集X和校对规则Y。 如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。 否则,采用默认的字符集和服务器校对规则。

    第三种办法:点击操作,改掉数据库的默认编码变为utf8_general_ci,这样我们就不用一个个去改了

     4、drop、delete和truncate

    drop是删除表,使用drop之后表结构和表的数据都会被删除,truncate 和 delete是删除表里的数据,但不删除表本身,truncate 和 delete相比,truncate要快很多,但缺点就是不能回滚,包括索引等都会变成初始值,数据就无法恢复了。

     5、Xampp中mysql传来的中文数据乱码

    使用XAMPP的过程中,对于存入表中的中文,在phpmyadmin中查看发现全是乱码,其实单纯的在mysql中也是这样,因为默认使用的是latin1的编码格式。

           改一下mysql下的bin文件下的my.ini文件就可以实现使用utf8_general_ci编码格式,这样就能显示中文了。

           在my.ini中添加下面一些东西:

    [client]   
    default_character_set = utf8  
    
      
    [mysqld]  
    character-set-server = utf8  
    
    collation-server = utf8_general_ci  
    
    
    [mysql]  
    default_character_set = utf8  

            重启mySQL,再次存入数据,发现没有中文乱码问题了。

    6、Notice: Undefined offset: 3 in E:xampphtdocsphpbase2elite15bsTreeNode.php on line 50

    就是数组越界,没有定义;解决办法:先用isset判断

    if(isset($arr[100])){
        $arr[100]="111" ; 
    }

    7、php返回json数据

    方法1:

    $tt=json_encode(array("name"=>"111"));
        echo $tt;
    /*********************/
    //在js文件中
    result = myReq.responseText;
    //解析json数据变为对象
    result=JSON.parse(result);

    方法2:

    echo '{"name":"1111"}';
    /*********************/
    //在js文件中,用JSON.parse解析
    result = myReq.responseText;
    //解析json数据变为对象
    result=JSON.parse(result);




  • 相关阅读:
    类加载器ClassLoader
    JAVA分别获取日期中的年、月、日
    sql 安全问题
    马尔科夫链
    触发器、锁、事务和事务控制
    索引、视图、存储过程、函数、游标
    字符集
    数据类型选择
    存储引擎
    错误:too many indices for array
  • 原文地址:https://www.cnblogs.com/huansky/p/5792559.html
Copyright © 2011-2022 走看看