天天看點

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); // 轉為小寫
        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'), '管理者', '[email protected]');      

但這時你會發現中文顯示“??”,亂碼,解決辦法:

進入字段--->選擇亂碼的變量,點選修改--->将其更改成”

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);      

樹林美麗、幽暗而深邃,但我有諾言尚待實作,還要奔行百裡方可沉睡。 -- 羅伯特·弗羅斯特