詳解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 服務器信息
相關文章
相關標籤/搜索