php和mysql学习问题笔记

1、Undefined index: pwd in E:\xampp\htdocs\phpbase2elite\12\source\register.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);  转为小写
        $words $word) {
            if (strstr($strGot,)) {
                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:\xampp\htdocs\phpbase2elite\15\bbs\TreeNode.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);

 

 

 





相关文章

文章浏览阅读8.4k次,点赞8次,收藏7次。SourceCodester Onl...
文章浏览阅读3.4k次,点赞46次,收藏51次。本文为大家介绍在...
文章浏览阅读1.1k次。- php是最优秀, 最原生的模板语言, 替代...
文章浏览阅读1.1k次,点赞18次,收藏15次。整理K8s网络相关笔...
文章浏览阅读1.2k次,点赞22次,收藏19次。此网络模型提供了...
文章浏览阅读1.1k次,点赞14次,收藏19次。当我们谈论网络安...