ket noi php voi mysql

download ket noi php voi mysql

of 40

Transcript of ket noi php voi mysql

  • 7/30/2019 ket noi php voi mysql

    1/40

    i Hc S Phm Tp. H Ch Minhi Hc S Phm Tp. H Ch Minh

    LP TRNH WEB PHPLP TRNH WEB PHP

    Chng 04: Kt ni PHP vi MySQL

  • 7/30/2019 ket noi php voi mysql

    2/40

    Ni dung

    1. Cc kiu d liu c bn trong MySQL

    2. Cc lnh thng dng trong MySQL3. Kt ni MySQL t PHP

    4. u trnh kt ni vo M S L

    2

    5. Cc bc truy cp CSDL MySQL

  • 7/30/2019 ket noi php voi mysql

    3/40

    11. Cc kiu d liu c bn trong. Cc kiu d liu c bn trong MySQLMySQL

    KiuKiu M tM t

    charchar(length)(length) ti a 255 k t, chiu di cnh =ti a 255 k t, chiu di cnh = lengthlength

    varcharvarchar(length)(length) ti a 255 k t, chiu di ng

  • 7/30/2019 ket noi php voi mysql

    4/40

    KiuKiu M tM t

    enumenum(option1,(option1,

    option2,)option2,)tp hp tnh, ngha ti a 65.535 gi trtp hp tnh, ngha ti a 65.535 gi tr

    -- --

    1. Cc kiu d liu thng dng trong1. Cc kiu d liu thng dng trong

    MySQLMySQL

    4

    timetime hh:mm:sshh:mm:ss

    datetimedatetime yyyyyyyy--mmmm--dd hh:mm:ssdd hh:mm:ss

  • 7/30/2019 ket noi php voi mysql

    5/40

    KiuKiu M tM t

    CREATECREATE to CSDL hoc bngto CSDL hoc bngALTERALTER thay i bng c snthay i bng c sn

    SELECTSELECT chn d liu t bngchn d liu t bng

    2. Cc lnh thng dng trong MySQL2. Cc lnh thng dng trong MySQL

    5

    DELETEDELETE xa d liu khi bngxa d liu khi bngDESCRIBEDESCRIBE xem thng tin m t v cu trc bngxem thng tin m t v cu trc bng

    INSERTINSERT INTOINTO ghi gi tr vo bngghi gi tr vo bng

    UPDATEUPDATE cp nht d liu c trong bngcp nht d liu c trong bng

    DROPDROP xa bng hay ton b CSDLxa bng hay ton b CSDL

  • 7/30/2019 ket noi php voi mysql

    6/40

    2. Cc lnh thng dng trong MySQL2. Cc lnh thng dng trong MySQL

    CREATE INDEXCREATE INDEX indexnameindexnameONON tablenametablename(column [ASC|DESC],(column [ASC|DESC],...);...);

    CREATE PROCEDURECREATE PROCEDURE procedurenameprocedurename( [( [parametersparameters] ) BEGIN ...] ) BEGIN ...END;END;

    CREATE TABLECREATE TABLE tablenametablename

    6

    columncolumn datatype [NULL|NOT NULL]datatype [NULL|NOT NULL] [CONSTRAINTS],[CONSTRAINTS],

    columncolumn datatype [NULL|NOT NULL]datatype [NULL|NOT NULL] [CONSTRAINTS],[CONSTRAINTS],

    ......

    ););

    CREATE USERCREATE USER usernameusername[@[@hostnamehostname] [IDENTIFIED BY] [IDENTIFIED BY[PASSWORD] '[PASSWORD] 'passwordpassword'];'];

    CREATE [OR REPLACE] VIEWCREATE [OR REPLACE] VIEW viewnameviewnameAS SELECT ...;AS SELECT ...;

  • 7/30/2019 ket noi php voi mysql

    7/40

    2. Cc lnh thng dng trong MySQL2. Cc lnh thng dng trong MySQL

    ALTERALTER TABLETABLE tablenametablename

    ((ADDADD column datatype [column datatype [NULL|NOTNULL|NOTNULLNULL] [] [CONSTRAINTSCONSTRAINTS],],

    7

    CHANGECHANGE column columns datatype [column columns datatype [NULL|NOTNULL|NOTNULL] [NULL] [CONSTRAINTSCONSTRAINTS],],

    DROPDROP column,column,

    ......););

  • 7/30/2019 ket noi php voi mysql

    8/40

    2. Cc lnh thng dng trong MySQL2. Cc lnh thng dng trong MySQL

    SELECTSELECT columnnamecolumnname, ..., ...

    FROMFROM tablenametablename, ..., ...

    [[WHEREWHERE ...]...]

    [[UNIONUNION ...]...]

    8

    [[GROUPGROUP BYBY ...]...]

    [[HAVINGHAVING ...]...]

    [[ORDERORDER BYBY ...];...];VD:VD: SELECTSELECT ** FROMFROM ketqua;ketqua;

  • 7/30/2019 ket noi php voi mysql

    9/40

    2. Cc lnh thng dng trong MySQL2. Cc lnh thng dng trong MySQL

    DELETE FROMDELETE FROM tablenametablename

    [[WHEREWHERE ...];...];

    9

    VD:VD:DELETE FROMDELETE FROM ketquaketqua WHEREWHERE

    MaSV = K29.103.010MaSV = K29.103.010

  • 7/30/2019 ket noi php voi mysql

    10/40

    2. Cc lnh thng dng trong MySQL2. Cc lnh thng dng trong MySQL

    INSERT INTOINSERT INTO tablenametablename[(columns, ...)][(columns, ...)]

    VALUESVALUES(values, ...);(values, ...);

    INSERT INTOINSERT INTO tablenametablenameVALUESVALUES(value1,(value1,

    10

    , ,, ,

    VD:VD:

    INSERT INTOINSERT INTOketqua (mamon, diem)ketqua (mamon, diem)VALUESVALUES(LTWEB, 10);(LTWEB, 10);

    INSERT INTOINSERT INTOketquaketquaVALUESVALUES(, K29.103.010,(, K29.103.010,

    LTWEB, 10);LTWEB, 10);

  • 7/30/2019 ket noi php voi mysql

    11/40

    2. Cc lnh thng dng trong MySQL2. Cc lnh thng dng trong MySQL

    UPDATEUPDATE tablenametablename

    SETSET columnamecolumname= value, ...= value, ...[[WHEREWHERE ...];...];

    11

    VD:VD:

    UPDATEUPDATE ketquaketqua SETSET diem = 10diem = 10 WHEREWHERE MaSVMaSV

    = K29.103.010= K29.103.010

  • 7/30/2019 ket noi php voi mysql

    12/40

    2. Cc lnh thng dng trong MySQL2. Cc lnh thng dng trong MySQL

    DROP DATABASEDROP DATABASE || INDEXINDEX || PROCEDUREPROCEDURE ||

    TABLETABLE || TRIGGERTRIGGER || USERUSER || VIEWVIEW itemname;itemname;

    12

    Xa bng SINHVIEN:Xa bng SINHVIEN: DROP TABLEDROP TABLE SinhVienSinhVien

    Xa CSDL QLSV:Xa CSDL QLSV: DROP DATABASEDROP DATABASE QLSV;QLSV;

  • 7/30/2019 ket noi php voi mysql

    13/40

    Giao tip dng lnhGiao tip dng lnh

    Kt ni mysql serverKt ni mysql server

    mysql [mysql [--hh hostnamehostname] [] [--PP portnumberportnumber]] --uu usernameusername--pp

    mysqlmysql [-h hostname] [-P portnumber] ----user=user=useruser----

    13

    password=password=passpass

    Nhp lnh sau du nhc lnhNhp lnh sau du nhc lnh mysqlmysql>>

    Mi lnh SQL kt thc bng du ;Mi lnh SQL kt thc bng du ;

  • 7/30/2019 ket noi php voi mysql

    14/40

    Giao tip haGiao tip ha

    Mt s cng c thng dngMt s cng c thng dng

    SQLyog EnterpriseSQLyog EnterprisephpMyAdminphpMyAdmin

    M SQL Quer BrowserM SQL Quer Browser

    14

    MySQL MaestrosMySQL Maestros

    NavicatNavicat

    MySQL ManagerMySQL Manager

  • 7/30/2019 ket noi php voi mysql

    15/40

    3. Kt ni MySQL t PHP3. Kt ni MySQL t PHP

    PHP scriptPHP script

    Th vin chunTh vin chun

    mysqlmysql

    Th vin ci tinTh vin ci tin

    mysqlimysqli

    15

    S dng hmS dng hm

    mysqlimysqli

    S dng lpS dng lp

    mysqlimysqli

    mysqli_stmtmysqli_stmt mysqli_resultmysqli_result

    S dng hmS dng hm

    mysqlmysql

  • 7/30/2019 ket noi php voi mysql

    16/40

    Th vin mysql ci tin trong PHP5Th vin mysql ci tin trong PHP5

    Thit lp trong php.iniThit lp trong php.ini

    extension=php_mysqli.dllextension=php_mysqli.dll

    u imu im

    16

    H tr lp trnh hng i tngH tr lp trnh hng i tng H tr nhn bn v phn tn CSDLH tr nhn bn v phn tn CSDL Nn v m ha d liu trn kt niNn v m ha d liu trn kt ni Ti u hiu nng v mTi u hiu nng v m

  • 7/30/2019 ket noi php voi mysql

    17/40

    4. Quy trnh kt ni vo MySQL4. Quy trnh kt ni vo MySQL

    1.1. M kt ni n CSDLM kt ni n CSDL

    2.2. Chn CSDLChn CSDL3.3. Chn bng m (nu cn)Chn bng m (nu cn)

    17

    ..

    5.5. Dn dpDn dp6.6. ng kt ning kt ni

  • 7/30/2019 ket noi php voi mysql

    18/40

    Bc 1: M kt ni n CSDLBc 1: M kt ni n CSDL

    // OOP mysqli// OOP mysqli

    $mysqli = new$mysqli = new mysqlimysqli('('hostnamehostname', '', 'usernameusername',',

    ''passwordpassword', '', 'dbnamedbname');');

    // m s li// m s li

    18

    $link =$link = mysqli_connectmysqli_connect('('hostnamehostname',',''usernameusername', '', 'passwordpassword', '', 'dbnamedbname');');

  • 7/30/2019 ket noi php voi mysql

    19/40

    Bc 2: Chn CSDLBc 2: Chn CSDL

    // OOP mysqli// OOP mysqli

    $mysqli$mysqli-->select_db>select_db('dbname');('dbname');

    19

    mysqli_select_dbmysqli_select_db($link, 'dbname');($link, 'dbname');

  • 7/30/2019 ket noi php voi mysql

    20/40

    BcBc 33: Chn bng m (nu cn): Chn bng m (nu cn)

    // OOP mysqli// OOP mysqli

    mysqlimysqli-->query>query($link, "SET NAMES ($link, "SET NAMES character setcharacter set")")

    // mysqli// mysqli

    20

    mysqli_querymysqli_query($link, "SET NAMES ($link, "SET NAMES character setcharacter set")")

    VD: SET NAMES UTF8VD: SET NAMES UTF8

  • 7/30/2019 ket noi php voi mysql

    21/40

    Bc 4: X l CSDLBc 4: X l CSDL

    Truy vnTruy vn

    // OOP mysqli// OOP mysqli$result =$result = mysqlimysqli-->query>query(query")(query")

    21

    // mysq// mysq$result =$result = mysqli_querymysqli_query($link, query")($link, query")

  • 7/30/2019 ket noi php voi mysql

    22/40

    Bc 4: X l CSDL (tt)Bc 4: X l CSDL (tt)

    Ly d liu t truy vnLy d liu t truy vn// OOP mysqli// OOP mysqli

    $row =$row = $result$result-->fetch_row()>fetch_row()

    $row =$row = $result$result-->fetch_assoc()>fetch_assoc()$row =$row = $result$result-->fetch_array(>fetch_array(result_typeresult_type))

    // m s li// m s li

    22

    $row =$row = mysqli_fetch_rowmysqli_fetch_row($result)($result)$row =$row = mysqli_fetch_assocmysqli_fetch_assoc($result)($result)$row =$row = mysqli_fetch_arraymysqli_fetch_array($result,($result, result_typeresult_type))

  • 7/30/2019 ket noi php voi mysql

    23/40

    Bc 5: Dn dpBc 5: Dn dp

    // OOP mysqli// OOP mysqli

    $result$result-->close>close()()

    // mysqli// mysqli

    23

    _ __ _

  • 7/30/2019 ket noi php voi mysql

    24/40

    Bc 6: ng kt niBc 6: ng kt ni

    // OOP mysqli// OOP mysqli

    $mysqli$mysqli-->close>close()()

    // mysqli// mysqli

    24

    mysqli_closemysqli_close($link)($link)

  • 7/30/2019 ket noi php voi mysql

    25/40

    5. Cc bc truy cp CSDL MySQL

    1. To kt ni n database server

    2. La chn CSDL

    3. Xy dng truy vn v thc hin truy vn

    4. X l kt u tr v

    25

    5. ng kt ni n server

  • 7/30/2019 ket noi php voi mysql

    26/40

    Khai bo sdng CSDL MySQLKhai bo kt ni CSDL:

  • 7/30/2019 ket noi php voi mysql

    27/40

    Khai bo sdng CSDL MySQL (tt)

    Truy vn d liu:$result =mysqli_query(cu_truy_vn);

    Gii phng ti nguyn truy vnmysqli_free_result($result );

    27

    :mysqli_fetch_array($result);mysqli_fetch_row($result);

    mysqli_fetch_assoc($result);

    S dng ting vit:mysqli_query(SET CHARACTER SET UTF8);

    Haymysqli_query(SET NAMES UTF8);

  • 7/30/2019 ket noi php voi mysql

    28/40

    Lu

    Hm die(Chui): a ra thng bo vkt thc.

    Vi cch vit trn, die ch thc hin khilnh trc n khng thnh cng

    28

    Cc hm cn thit: mysqli_affected_rows(): S bn ghi b tc ng

    bi lnh mysqli_query lin trc.

    mysqli_error(): Thng bo li (nu c) mysqli_errno(): M li

  • 7/30/2019 ket noi php voi mysql

    29/40

    Xem thm

    Kt ni CSDL MySQL s dng PDO

    PHP Data Objects

    29

  • 7/30/2019 ket noi php voi mysql

    30/40

    Cu hnh sdng PDO

    Need to enable PDO in your php.ini

    MUST load PDO first

    Unix:

    extension=pdo.so

    30

    extension=pdo_XXX.so

    Windows

    extension=php_pdo.dll

    extension=php_pdo_XXX.dll

  • 7/30/2019 ket noi php voi mysql

    31/40

    Connecting via PDO

    try {

    $dbh = new PDO($dsn,

    $user, $password, $options);

    catch PDOExce tion e

    31

    echo Failed to connect:

    . $e->getMessage();

    }

  • 7/30/2019 ket noi php voi mysql

    32/40

    DSN format in PDO

    Driver:optional_driver_specific_stuff sqlite:/path/to/db/file

    sqlite::memory: mysql:host=name;dbname=dbname

    32

    _ _ _

    oci:dbname=dbname;charset=charset

    firebird:dbname=dbname;charset=charset;role=role

    odbc:odbc_dsn

  • 7/30/2019 ket noi php voi mysql

    33/40

    Connection management

    try {

    $dbh = new PDO($dsn, $user, $pw);

    } catch (PDOException $e) {

    echo connect failed: . $e->getMessage();

    }

    33

    //

    // done; release the connection

    $dbh = null;

  • 7/30/2019 ket noi php voi mysql

    34/40

    Lets get data

    $dbh = new PDO($dsn);

    $stmt = $dbh->prepare(

    SELECT * FROM FOO);

    stmt->execute

    34

    while ($row = $stmt->fetch()) {

    print_r($row);

    }

  • 7/30/2019 ket noi php voi mysql

    35/40

    Fetch types

    $stmt->fetch(PDO_FETCH_BOTH) Array with numeric and string keys

    default option

    PDO_FETCH_NUM Array with numeric keys

    PDO_FETCH_ASSOC

    35

    Array with string keys

    PDO_FETCH_OBJ $obj->name holds the name column from the row

    PDO_FETCH_BOUND

    Just returns true until there are no more rows

  • 7/30/2019 ket noi php voi mysql

    36/40

    Lets change data

    $deleted = $dbh->query(

    DELETE FROM FOO WHERE 1);

    chan es = dbh-> uer

    36

    UPDATE FOO SET active=1

    . WHERE NAME LIKE %joe%);

  • 7/30/2019 ket noi php voi mysql

    37/40

    Smarter Queries

    Quoting is annoying, but essential

    PDO offers a better way

    $stmt->prepare(INSERT INTO CREDITS(extension, name) VALUES (:extension,

    37

    $stmt->execute(array(

    :extension => xdebug,

    :name => Derick Rethans));

  • 7/30/2019 ket noi php voi mysql

    38/40

    Binding for output

    $stmt = $dbh->prepare(

    "SELECT extension, name from CREDITS");

    if ($stmt->execute()) {

    $stmt->bindColumn(extension', $extension);

    $stmt->bindColumn(name', $name);

    38

    - _ _

    echo Extension: $extension\n;echo Author: $name\n;

    }

    }

  • 7/30/2019 ket noi php voi mysql

    39/40

    Transactions

    try {

    $dbh->beginTransaction();

    $dbh->query(UPDATE );$dbh->query(UPDATE );

    39

    $dbh->commit();} catch (PDOException $e) {

    $dbh->rollBack();

    }

  • 7/30/2019 ket noi php voi mysql

    40/40

    Cu hi v tho lun

    40