PHP从入门到精通——读书笔记(第16—19章:MyS

系统 1820 0

第十六章:MySql数据库基础

1:MySql概述
1)功能强大:提供了多种数据库存储引擎,支持事务、视图、存储过程和触发器
2)支持跨平台
3)运行速度快:在Mysql中,使用了B树磁盘表(MyISAM)和索引压缩;
4)支持各种开发语言:php、asp.net、java、python、ruby、c、c++、perl等
5)数据库存储容量大:mysql数据库的最大有效表尺寸是由操作系统对文件大小的限制决定的。表空间最大容量64TB

2:启动、连接、断开和停止MySql服务器(windows平台)
1)启动:net start mysql
2)连接:mysql -u root -h 127.0.0.1 -p password (用户名、MySql服务器所在地址、用户密码。服务器地址可不写)
3)断开:exit、quit
4)停止:net stop mysql

3:MySql数据库操作
1)创建数据库: CREATE DATABASE 数据库名;
2)查看数据库: SHOW DATABASES;
3)选择数据库:USE DATABASE
4)删除数据库:DROP DATABASE

4:MySql数据表操作
1)创建数据表:CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 数据表名 [(create_difinition,...)][table_options][select_statement]
TEMPORARY:如果使用该关键字,表示创建一个临时表。
create_difinition: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [PRIMARY KEY] [reference_definition]。如:
create table table_name (列名1 属性, 列名2 属性...);

2)查看表结构 SHOW COLUMNS 或 DESCRIBE
SHOW [FULL] COLUMNS FROM 数据表名 [FROM 数据库名]; 或 SHOW [FULL] COLUMNS FROM 数据表名.数据库名
DESCRIBE 数据表名(可简写成DES)
查看某列: DES 数据表名 列名;

3)修改表结构:ALTER TABLE
ALTER[IGNORE] TABLE 数据表名 alter_spec [,alter_spec]... (如果指定 IGNORE 时,如果出现重复关键的行,则只执行一行,其他重复的呗删除)
alter table tb_admin add email varchar(50) not null, modify user varchar(40); (modify是用来修改字句定义字段)
说明:通过alter修改表列,其前提是必须将表中数据全部删除,然后才可以修改表列

4)重命名表:RENAME TABLE
5)删除表:DROP TABLE

5:MySQL 语句操作
1)插入记录 insert:insert into 数据表名(column_name,......)values(v1,v2.....)
2)查询数据库记录 : select selection_list from 数据表名 where ... group by ... order by ... having ... limit...
(group by:对结果进行分组;order by:对结果进行排序;having:查询时满足的第二条件;limit:限定输出的结果)
多表查询:select 字段名 from 表1,表2...... where 表1.字段=表2.字段 and 其他查询条件
3)修改、删除记录:update、delete

6:MySQL数据库备份和恢复
要在命令行模式下操作MySQL数据库,必须要对电脑的环境变量进行设置,右击“我的电脑”,选择“属性”,选择“高级”,然后选择“环境变量”。在用户变量的文本框中找到变量PATH并选中,在PATH的变量值文本框中添加:“D:\webpage\AppServ\MySQL\bin”(MySql中bin文件夹的安装路径)
1)备份:使用MYSQLDUMP命令
mysqldump -uroot -proot db_databasename>F:\db_databasename.txt
其中-uroot中的root是用户名,而-proot中的root是密码,db_dabataname 是数据库名。F:\db_databasename.txt 是备份存储的位置

注意:“-uroot”中是没有空格的,在该命令的结尾处也没有任何的结束符

2)恢复:mysql -uroot -proot db_database < F:\db_databasename.txt

第十七章:phpMyAdmin 图形化管理工具


第十八章:PHP操作MySQL数据库

1:连接mysql服务器:使用 mysql_connect() 函数

mysql_connect('hostname', 'username', 'password'); 
hostname是mysql服务器的主机名(或IP),如果省略端口号,默认为3306

      $link = mysql_connect("localhost","root","root") or die ("不能连接到数据库服务器".mysql_error() );



if ($link) {

       echo "连接成功";

}
    

技巧:在mysql_connect()函数前面添加符号“@”;用于限制这个命令的出错信息的显示

2:选择mysql数据库:使用 mysql_select_db() 函数 选择mysql数据库服务器上的数据库,并与数据库建立连接

mysql_select_db ( string 数据库名 [, resource link_identifier] )  或 mysql_query ("use 数据库名"[, resource link_identifier]);
link_identifier是MySQL服务器的连接标识。如果没有指定连接标识符,则使用上一个打开的连接。如果没有打开的连接,本函数将无参数调用mysql_connect()函数来尝试打开一个并使用。

      $link = mysql_connect ("localhost", "root", "root") or die ("不能连接到数据库服务器".mysql_error() );



//选择数据库db_database18

$db_selected = mysql_select_db("db_database18", $link);



if ($db_selected){



    echo "数据库选择成功";  

}
    

也可以使用$db_selected = mysql_query ("use db_database18", $link);

3:执行SQL语句:在选择的数据库中使用 mysql_query() 函数执行sql语句

1)mysql_query ( string query [, resource link_identifier] )
注意:在mysql_query() 函数中执行的sql语句不应以分号 “;” 结尾

      $result = mysql_query ("insert into tb_member values('tm','111','tm@tmsoft.com' ", $link);



$result = mysql_query ("update tb_member set user = '纯净水', pwd='1025' where user = 'tm' ", $link);



$result = mysql_query ("delete from tb_member where user = '纯净水' ", $link);



$result = mysql_query (" select * from tb_member ", $link);



//显示表结构

$result = mysql_query (" DESC tb_member ", $link);
    

2)使用 mysql_fetch_array() 函数从数组结果集中获取信息

array mysql_fetch_array ( resource result [, int result_type] )
result:资源类型的参数,要传入的是由mysql_query()函数返回的数据指针
result_type:可选项,整数型参数,要传入的是MYSQL_ASSOC(关联索引)、MYSQL_NUM(数字索引)、MYSQL_BOTH(包含以上2种,默认)
注意:本函数返回的字段名区分大小写

View Code
        
          $sql
        
         = 
        
          mysql_query
        
        ("select * from tb_book"
        
          );




        
        
          $info
        
         = 
        
          mysql_fetch_array
        
        (
        
          $sql
        
        
          );




        
        
          if
        
         (
        
          $_POST
        
        [submit] == "查询"
        
          ){



        
        
        
          $txt_book
        
         = 
        
          $_POST
        
        
          [txt_book];



        
        
        
          $sql
        
         = 
        
          mysql_query
        
        ("select * from tb_book where bookname like '%".
        
          trim
        
        (
        
          $txt_book
        
        )."%'  "
        
          );



        
        
        
          $info
        
         = 
        
          mysql_fetch_array
        
        (
        
          $sql
        
        
          );

}
        
      

3)使用 mysql_fetch_object() 函数从结果集中获取一行作为对象

object mysql_fetch_object ( resource result )——返回的是一个对象而不是数组,通过字段名访问数组: $row -> col_name 
注意:本函数区分大小写

4)使用 mysql_fetch_row() 函数逐行获取结果集中的每条记录

array mysql_fetch_row ( resource result )
与mysql_fetch_array()函数区别是:使用从0开始的数字下标。
区分大小写

5)使用 mysql_num_rows() 函数获取查询结果集中的记录数

int mysql_num_rows ( resource result )

PHP分页:

View Code
        <html>

<head>

<title>公告信息管理</title>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<link href="css/style.css" rel="stylesheet">

</head>

<body>

<table width="828" height="522" border="0" align="center" cellpadding="0" cellspacing="0" id="__01">

    <tr>

        <td background="images/image_01.gif">&nbsp;            </td>

        <td height="140" background="images/image_02.gif">&nbsp;            </td>

    </tr>

    <tr>

        <td width="202" rowspan="3" valign="top"><table width="202" border="0" cellspacing="0" cellpadding="0">

          <tr>

            <td><?php 
        
          include
        
        ("menu.php");?></td>

          </tr>

        </table></td>

        <td height="34" background="images/image_04.gif">&nbsp;            </td>

    </tr>

    <tr>

        <td height="38" background="images/image_06.gif">&nbsp;            </td>

    </tr>

    <tr>

        <td height="270" valign="top">

            <table width="626" height="100%" border="0" cellpadding="0" cellspacing="0">

              <tr>

                <td height="257" align="center" valign="top" background="images/image_08.gif"><table width="600" height="271"  border="0" cellpadding="0" cellspacing="0">

                  <tr>

                    <td height="22" align="center" valign="top" 
        
          class
        
        ="word_orange"><strong>公告信息<strong>分页显示</strong></strong></td>

                  </tr>

                  <tr>

                    <td height="249" align="center" valign="top">

                    <table width="550" border="1" cellpadding="1" cellspacing="1" bordercolor="#FFFFFF" bgcolor="#999999">

                      <tr align="center" bgcolor="#f0f0f0">

                        <td width="221">公告标题</td>

                        <td width="329">公告内容</td>

                      </tr>

                    <?
        
          php

                    
        
        
          $conn
        
        =
        
          mysql_connect
        
        ("localhost","root","root") or 
        
          die
        
        ("数据库服务器连接错误".
        
          mysql_error
        
        
          ());

                    
        
        
          mysql_select_db
        
        ("db_database18",
        
          $conn
        
        ) or 
        
          die
        
        ("数据库访问错误".
        
          mysql_error
        
        
          ());

                    
        
        
          mysql_query
        
        ("set names gb2312"
        
          );

                    
        
        
          /*
        
        
            $page为当前页,如果$page为空,则初始化为1  
        
        
          */
        
        
          if
        
         (
        
          $page
        
        ==""
        
          ){

                        
        
        
          $page
        
        =1
        
          ;}

                       
        
        
          if
        
         (
        
          is_numeric
        
        (
        
          $page
        
        
          )){

                        
        
        
          $page_size
        
        =4;                                     
        
          //
        
        
          每页显示4条记录
        
        
          $query
        
        ="select count(*) as total from tb_affiche  order by id desc"
        
          ;   

                        
        
        
          $result
        
        =
        
          mysql_query
        
        (
        
          $query
        
        );                          
        
          //
        
        
          查询符合条件的记录总条数
        
        
          $message_count
        
        =
        
          mysql_result
        
        (
        
          $result
        
        ,0,"total");        
        
          //
        
        
          要显示的总记录数
        
        
          $page_count
        
        =
        
          ceil
        
        (
        
          $message_count
        
        /
        
          $page_size
        
        );          
        
          //
        
        
          根据记录总数除以每页显示的记录数求出所分的页数
        
        
          $offset
        
        =(
        
          $page
        
        -1)*
        
          $page_size
        
        ;                        
        
          //
        
        
          计算下一页从第几条数据开始循环  
        
        
          $sql
        
        =
        
          mysql_query
        
        ("select * from tb_affiche order by id desc limit 
        
          $offset
        
        , 
        
          $page_size
        
        "
        
          );

                        
        
        
          $row
        
        =
        
          mysql_fetch_object
        
        (
        
          $sql
        
        
          );

                        
        
        
          if
        
        (!
        
          $row
        
        
          ){

                            
        
        
          echo
        
         "<font color='red'>暂无公告信息!</font>"
        
          ;

                        }

                        
        
        
          do
        
        
          {

                        
        
        ?>

                      <tr bgcolor="#FFFFFF">

                        <td><?php 
        
          echo
        
        
          $row
        
        ->title;?></td>

                        <td><?php 
        
          echo
        
        
          $row
        
        ->content;?></td>

                      </tr>

                    <?
        
          php

                        }
        
        
          while
        
        (
        
          $row
        
        =
        
          mysql_fetch_object
        
        (
        
          $sql
        
        
          ));

                    }

                    
        
        ?>

                     </table>

                      <br>

                      <table width="550" border="0" cellspacing="0" cellpadding="0">

                        <tr>

                          <!--  翻页条 -->

                            <td width="37%">&nbsp;&nbsp;页次:<?php 
        
          echo
        
        
          $page
        
        ;?>/<?php 
        
          echo
        
        
          $page_count
        
        ;?>页&nbsp;记录:<?php 
        
          echo
        
        
          $message_count
        
        ;?> 条&nbsp; </td>

                            <td width="63%" align="right">

                            <?
        
          php

                            
        
        
          /*
        
        
            如果当前页不是首页  
        
        
          */
        
        
          if
        
        (
        
          $page
        
        !=1
        
          ){

                            
        
        
          /*
        
        
            显示“首页”超链接  
        
        
          */
        
        
          echo
        
          "<a href=page_affiche.php?page=1>首页</a>&nbsp;"
        
          ;

                            
        
        
          /*
        
        
            显示“上一页”超链接  
        
        
          */
        
        
          echo
        
         "<a href=page_affiche.php?page=".(
        
          $page
        
        -1).">上一页</a>&nbsp;"
        
          ;

                            }

                            
        
        
          /*
        
        
            如果当前页不是尾页  
        
        
          */
        
        
          if
        
        (
        
          $page
        
        <
        
          $page_count
        
        
          ){

                            
        
        
          /*
        
        
            显示“下一页”超链接  
        
        
          */
        
        
          echo
        
         "<a href=page_affiche.php?page=".(
        
          $page
        
        +1).">下一页</a>&nbsp;"
        
          ;

                            
        
        
          /*
        
        
            显示“尾页”超链接  
        
        
          */
        
        
          echo
        
          "<a href=page_affiche.php?page=".
        
          $page_count
        
        .">尾页</a>"
        
          ;

                            }

                            
        
        
          mysql_free_result
        
        (
        
          $sql
        
        
          );

                            
        
        
          mysql_close
        
        (
        
          $conn
        
        
          );

                            
        
        ?>

                        </tr>

                      </table></td>

                  </tr>

                </table></td>

              </tr>

            </table>            </td>

    </tr>

    <tr>

        <td bgcolor="#F0F0F0"></td>

        <td height="43" background="images/image_12.gif"></td>

    </tr>

</table>

</body>

</html>
      

注意:在连接数据库时,一定要使用 mysql_query("set names gb2312")函数设置数据库的编码格式(也可以设置为其他编码)。通过该设置可以避免在输出中文字符串时出现乱码。

4:关闭结果集:数据库操作完成后,需要关闭结果集以释放资源—— mysql_free_result ($result);

技巧:如果在多个网页中都要频繁进行数据库访问,则可以建立与数据库服务器的持续连接来提高效率。因为每次与数据库服务器的连接需要较长的时间和较大的开销。建立持续连接的方法:调用 mysql_pconnect() 代替 myslq_connect()。建立的持续连接在本程序结束时,不需要调用 mysql_close()来关闭。下次程序再次执行 mysql_pconnect() 函数时,系统自动直接返回已经建立的持续连接的ID号,而不再去真的连接数据库。

5:关闭MySQL服务器——完成数据库操作后,应该使用 mysql_close() 函数关闭与MySQL服务器的连接: mysql_close ($Link);
说明:PHP与数据库的连接是非持久连接,系统会自动回收,一般不用设置关闭。但如果一次性返回的结果集比较大,或网站访问量比较多,则最好使用mysql_close() 函数手动进行释放。

 

第十九章:ADODB类库

1:概述——ADODB:Active Data Objects Data Base,它是存取数据库所用到的一组函数,此函数库用来隐藏不同数据库函数间的差异,让开发者可以很简单地去切换数据库。要使用ADODB来操作数据库,首先下载ADODB类库包,将其解压到Web服务器目录下,然后调用ADODB中的文件即可

2:使用ADODB操作MySQL

View Code
        
          /*
        
        
              

(1)载入(include)adodb.inc.php文件

要使用ADODB类库,首先是要启动ADODB,启动ADODB的方法就是载入adodb.ini.php文件.


        
        
          */
        
        
          include_once
        
         ('../adodb5/adodb.inc.php'
        
          );


        
        
          /*
        
        
          

(2)建立连接

建立连接使用到的函数为:ADONewConnection()和NewADOConnection()。


        
        
          */
        
        
          $conn
        
         = ADONewConnection('mysql'
        
          );


        
        
          /*
        
        
          

(3)连接数据库

第二步的建立连接,并没有真正的连接上数据库,需要使用Connect()或PConnect()成员方法来完成最后的链接步骤。Connect()和PConnect()方法的格式是一样的,不同的是:PConnect()方法为持续性链接,而Connect()方法为非持续性链接。

Connect($host,[$user],[$password],[$database])



参数含义:

    $host:数据库服务器地址。

    $user:数据库帐号。

    $password:帐号密码。

    $database:连接的数据库。

在本实例中,要链接数据库tb_database21,服务器为本机,用户名密码都为root。


        
        
          */
        
        
          $conn
        
         -> PConnect('localhost','root','root','db_database21'
        
          );


        
        
          //
        
        
          设置编码
        
        
          $conn
        
         -> execute('set names gb2312'
        
          );


        
        
          /*
        
        
          

/*(4)执行SQL语句

成功连接数据库后,就可以执行SQL语句对数据库进行操作了。执行SQL语句的方法是Execute()。该方法返回执行SQL语句后的记录集。如果发生错误,则返回false。Execute()方法的格式为:

Execute($sql,$inputarr=false)


        
        
          */
        
        
          $rst
        
         = 
        
          $conn
        
         -> Execute('select * from tb_object') or 
        
          die
        
        ('执行错误'
        
          );




        
        
          /*
        
        
          

(5)判断结果,并对结果处理

第4步执行后,就需要对返回的记录集进行处理了。一般处理结果集时,首先判断EOF属性表明当前的记录指针已经指向了记录集的最后一笔。movenext()方法的作用是将记录指针向下移动一位。


        
        
          */
        
        
          while
        
        (!
        
          $rst
        
         -> EOF){                    
        
          //
        
        
          如果没有错误,则配合wihle语句循环输出结果
        
        
          echo
        
        
          $rst
        
         -> fields['bigclass'].' '
        
          ;    

        
        
        
          $rst
        
         -> movenext();                    
        
          //
        
        
          指针下移
        
        
              }

    


        
        
          /*
        
        
          

(6)关闭连接

当对数据库的操作结束后,需要关闭连接,释放内存。关闭连接的方法是close()。


        
        
          */
        
        
          $rst
        
         ->
        
           close();


        
        
          $conn
        
         -> close();
      

也可以通过数据源名称(DSN)的方式进行连接,代码如下:

      
        include_once
      
      ('../adbdb5/dbodb.inc.php'
      
        );


      
      
        $conn
      
       = ADONewConnection('mysql://root:root@localhost/db_database19');
    

使用ODBC连接MSSQL数据库

      
        include_once
      
      ('../adodb5/adodb.inc.php'
      
        );


      
      
        $conn
      
       = ADONewConnection('odbc_mssql'
      
        );


      
      
        $conn
      
      ->PConnect("Driver={SQL Server};Server=localhost;Database=mydb; ", 'username', 'password');
    

 

PHP从入门到精通——读书笔记(第16—19章:MySQL数据库基础、PHP操作MySQL、ADODB类库等)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论