详解PHP操做MySQL数据库

Mac本地环境搭建

Mac系统,咱们可使用MAMP Pro 软件来搭建本地服务器。安装好这款软件,网站的目录在 /Applications/MAMP/htdocs 文件夹里,只需将文件放入该文件夹中,就能够经过http://localhost:8888来访问了,或者经过点击以下红色下划线按钮来快速访问站点。php

图片描述

mac系统下安装php,两行便可。html

brew tap josegonzalez/homebrew-php

brew install php54

安装完后配置一下,你就可使用phpstorm来愉快地编程啦。安装的php路径在/usr/local/bin/phpmysql

数据库基本操做

图片描述

1)用户的 Web 浏览器发出 HTTP 请求,请求特定 Web 页面。
2)Web服务器收到.php 的请求获取该文件,并将它传到 PHP 引擎,要求它处理。 3)PHP 引擎开始解析脚本。 脚本中有一条链接数据库的命令, 还有执行一个查询的令。命
PHP 打开通向 MYSQL 数据库的链接,发送适当的查询。
4)MYSQL 服务器接收数据库查询并处理。将结果返回到 PHP 引擎。
5)PHP 以你去哪干完成脚本运行,一般,这包括将查询结果格式化成 HTML 格式。然
后再输出 HTML 返回到 Web 服务器。
6)Web服务器将 HTML 发送到浏览器。

MySQL 经常使用数据类型

整数型:TINYINT,SMALLINT,INT,BIGINT 
浮点型:FLOA T,DOUB LE,DECIMAL(M,D) 
字符型:CHAR,VARCHAR
日期型:DA TETIME,DA TE,TIMESTA MP 
备注型:TINYTEXT,TEXT,LONGTEXT

MySQL 数据库操做

1)显示当前存在的数据库
    >SHOWDATABASES; 
2)选择你所须要的数据库
    >USEguest; 
3)查看当前所选择的数据库
    >SELECTDATABASE(); 
4)查看一张表的全部内容
    >SELECT*FROMguest; //能够先经过SHOWTABLES;来查看有多少张表 
5)根据数据库设置中文编码
    >SET NAMESgbk; //set names utf8; 
6)建立一个数据库
    >CREATEDATABASEbook; 
7)在数据库里建立一张表
    >CREATETABLEusers ( 
    >username VARCHAR(20),//NOT NULL 设置不容许为空
    >sex CHAR(1),
    >birth DATETIME);
8)显示表的结构 
    >DESCIRBEusers;

9)给表插入一条数据
    >INSERT INTO users (username,sex,birth) VALUES('jack','male',NOW());

PHP链接MySQL数据库

链接数据库

<?php
    header('COntent-Type:text/html;charset=utf-8');//设置页面编码,若是文件是gbk编码,则charset也应用gbk
    //@表示若是出错了,不要报错,直接忽略
    //参数:服务器地址,用户名和密码

    echo (!!@mysql_connect('localhost','root','*****'));//1
?>

咱们用双感叹号!!来将资源句柄转换成布尔值,正确输出1,错误则输出错误信息。而若是前面加了@符号,则忽略错误信息,不会输出错误信息。sql

对于错误消息的处理,咱们可使用mysql_error()函数来输出错误消息:数据库

mysql_connect('localhost','root','****') or die('数据库链接失败,错误信息:'.mysql_error());//对于密码错误的提示:数据库链接失败,错误信息:Access denied for user 'root'@'localhost' (using password: YES)

die() 函数输出一条消息,并退出当前脚本。该函数是 exit() 函数的别名。编程

数据库链接参数,能够用常量来存储,这样就不能被随意修改,更加安全。数组

<meta charset="utf-8">
<?php
    //定义常量参数
    define('DB_HOST','localhost');
    define('DB_USER','root');
    define('DB_PWD','345823');//密码


    $connect = mysql_connect(DB_HOST,DB_USER,DB_PWD) or die('数据库链接失败,错误信息:'.mysql_error());
    echo $connect;//Resource id #2 
?>

值得注意的是,mysql_connect()括号内的常量可不能加引号,不然确定出错。浏览器

选择指定的数据库

<?php

    define('DB_HOST','localhost');
    define('DB_USER','root');
    define('DB_PWD','345823');//密码
    define('DB_NAME','trigkit');//在phpmyadmin建立一个名为trigkit的数据库

    //链接数据库
    $connect = mysql_connect(DB_HOST,DB_USER,DB_PWD) or die('数据库链接失败,错误信息:'.mysql_error());

    //选择指定数据库
    mysql_select_db(DB_NAME,$connect) or die('数据库链接错误,错误信息:'.mysql_error());//将表名字故意写错,提示的错误信息:数据库链接错误,错误信息:Unknown database 'trigkt'

?>

一般不须要使用 mysql_close(),由于已打开的非持久链接会在脚本执行完毕后自动关闭安全

mysql_select_db(database,connection):选择MySQL数据库

获取记录集

<meta charset="utf-8">
<?php

    define('DB_HOST','localhost');
    define('DB_USER','root');
    define('DB_PWD','345823');//密码
    define('DB_NAME','trigkit');

    //链接数据库
    $connect = mysql_connect(DB_HOST,DB_USER,DB_PWD) or die('数据库链接失败,错误信息:'.mysql_error());

    //选择指定数据库
    mysql_select_db(DB_NAME,$connect) or die('数据表链接错误,错误信息:'.mysql_error());

    //从数据库里把表的数据提出来(获取记录集)
    $query = "SELECT * FROM class";//在trigkit数据库中新建一张'表'
    $result = mysql_query($query) or die('SQL错误,错误信息:'.mysql_error());//故意将表名写错:SQL错误,错误信息:Table 'trigkit.clas' doesn't exist
?>

mysql_query() 函数执行一条 MySQL 查询。服务器

输出数据

<meta charset="utf-8">
<?php

    define('DB_HOST','localhost');
    define('DB_USER','root');
    define('DB_PWD','345823');//密码
    define('DB_NAME','trigkit');

    //链接数据库
    $connect = mysql_connect(DB_HOST,DB_USER,DB_PWD) or die('数据库链接失败,错误信息:'.mysql_error());

    //选择指定数据库,设置字符集
    mysql_select_db(DB_NAME,$connect) or die('数据表链接错误,错误信息:'.mysql_error());
    mysql_query('SET NAMES UTF8') or die('字符集设置出错'.mysql_error());

    //从数据库里把表的数据提出来(获取记录集)
    $query = "SELECT * FROM class";
    $result = mysql_query($query) or die('SQL错误,错误信息:'.mysql_error());

    print_r(mysql_fetch_array($result,MYSQL_ASSOC));
?>

释放结果集资源(仅须要在考虑到返回很大的结果集时会占用多少内存时调用。)

<?php
    mysql_free_result($result); 
?>

增删改查

新增数据

<?php
    require 'index.php';
    //新增数据
    $query = "INSERT INTO CLASS(
              name,
              email,
              point,
              regdate)
        VALUES (
        '小明',
        'xiaoming@163.com',
        100,
        NOW()
        )";

    @mysql_query($query) or die('新增错误:'.mysql_error());

?>

咱们将上面的代码保存为index.php,丢进/Applications/MAMP/htdocs/ 文件夹。将上面的代码保存为demo.php,放进一样的目录内。Mac系统获取文件的路径很简单,只需将文件拉进终端便可显示路径名。

修改数据

咱们假设要修改的数据的名称是小明,id为2,将他的point分数修改成80分,代码以下:

<?php
    require 'index.php';

    //修改数据
    $query = 'UPDATE class SET point=80 WHERE id=2';
    @mysql_query($query);
?>

删除数据

<?php
    require 'index.php';

    //删除数据
    $query = "DELETE FROM class WHERE id=2";
    @mysql_query($query);

    mysql_close();
?>

显示数据

<?php
    require 'index.php';

    //显示数据
    $query = "SELECT id,name,email,regdate FROM class";
    $result = mysql_query($query) or die('sql语句错误:'.mysql_error());

    print_r(mysql_fetch_array($result));
    mysql_close();
?>

或者显示指定值数据:

$data = mysql_fetch_array($result);
echo $data['email'];//显示email
echo $data['name'];//显示name

其余经常使用函数

mysql_fetch_lengths(): 取得结果集中每一个输出的长度 
mysql_field_name(): 取得结果中指定字段的字段名

mysql _fetch_row():从结果集中取得一行做为枚举数组
mysql_fetch_assoc(): 从结果集中取得一行做为关联数组
mysql_fetch_array(): 从结果集中取得一行做为关联数组,或数字数组,或两者兼有

mysql_num_rows(): 取得结果集中行的数目 
mysql_num_fields():取得结果集中字段的数目

mysql_get_client_info(): 取得 MySQL 客户端信息 
mysql_get_host_info(): 取得 MySQL 主机信息 
mysql_get_proto_info(): 取得 MySQL 协议信息 
mysql_get_server_info(): 取得 MySQL 服务器信息
相关文章
相关标签/搜索