程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP入門教程之使用Mysqli操作數據庫的方法(連接,查詢,事務回滾等)

PHP入門教程之使用Mysqli操作數據庫的方法(連接,查詢,事務回滾等)

編輯:PHP綜合

本文實例講述了PHP入門教程之使用Mysqli操作數據庫的方法。分享給大家供大家參考,具體如下:

Demo1.php

<?php
  //使用 mysqli 對象操作數據庫
  //創建 mysqli 對象(資源句柄)
  $_mysqli = new mysqli();
  //連接數據庫 1.主機名(ip) 2.賬戶 3.密碼 4.數據庫
  //mysqli_connect 函數 == $_mysqli -> connect();
  $_mysqli -> connect('localhost','root','123456','guest');
  //斷開 MySQL mysqli_close() == $_mysqli -> close();
  $_mysqli -> close();
?>

Demo2.php

<?php
  //不用 connect ,直接使用構造方法
  $_mysqli = new mysqli('localhost','root','123456','guest');
  //單獨選擇一個數據庫
  //這裡選擇的數據庫會替代上面的數據庫
  //為了避免這些麻煩,盡量不用去單獨指向了
  //$_mysqli -> select_db('school');
  $_mysqli -> close();
?>

Demo3.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  //連接 mysql
  //當你參數出現錯誤,導致連接錯誤的時候,
  //$_mysqli 這個對象就沒有創建成功,也就是說,沒有資源句柄的功能
  //就是沒有調用 mysqli 下的方法和屬性的能力了
  @$_mysqli = new mysqli('localhost','root','123456','guest');
  //為什麼要用函數去捕捉呢?
  //為什麼不用面向對象的方式去捕捉呢?
  if(mysqli_connect_errno()){
    echo '數據庫連接出現了錯誤,錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  $_mysqli->close();
?>

Demo4.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  //連接 mysql
  //當你參數出現錯誤,導致連接錯誤的時候,
  //$_mysqli 這個對象就沒有創建成功,也就是說,沒有資源句柄的功能
  //就是沒有調用 mysqli 下的方法和屬性的能力了
  @$_mysqli = new mysqli('localhost','root','123456','guest');
  //為什麼要用函數去捕捉呢?
  //為什麼不用面向對象的方式去捕捉呢?
  if(mysqli_connect_errno()){
    echo '數據庫連接出現了錯誤,錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  //$_mysqli -> select_db('fsdfd');
  //數據庫操作時發生的錯誤
  if($_mysqli -> errno){
    echo '數據庫操作錯誤:'.$_mysqli -> error;
  }
  $_mysqli->close();
?>

Demo5.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //數據庫連接時發生的錯誤
  if(mysqli_connect_errno()){
    echo '數據庫連接出現了錯誤,錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  //設置一下編碼
  $_mysqli -> set_charset('utf8');
  //創建一句 SQL ,獲取數據庫的表的數據
  $_sql = "SELECT * FROM tg_user";
  //執行 SQL 語句,把結果集賦給 $_result
  $_result = $_mysqli -> query($_sql);
  //var_dump($_result); //object(mysqli_result)#2 (0) { }
  //通過結果集,我要取得第一行數據
  //fetch_row();是返回的一個數組,裡面是第一條數據的集合
  print_r( $_result -> fetch_row());
  //運行一次,指針下移一條
  print_r( $_result -> fetch_row());
  //銷毀結果集
  $_result -> free();
  $_mysqli->close();
?>

Demo6.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //數據庫連接時發生的錯誤
  if (mysqli_connect_errno()) {
    echo '數據庫連接出現了錯誤.錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  //設置一下編碼
  $_mysqli->set_charset('utf8');
  //創建一句SQL,獲取數據庫的表的數據
  $_sql = "SELECT * FROM tg_user";
  //創建一個結果集
  $_result = $_mysqli->query($_sql);
  //使用索引數組取值
  //print_r($_result->fetch_row());
  $_row = $_result->fetch_row();
  echo $_row[3];
  //遍歷,下標很難記[3]
  while (!!$_row = $_result->fetch_row()) {
    echo $_row[3].'<br />';
  }
  $_mysqli->close();
?>

Demo7.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //數據庫連接時發生的錯誤
  if (mysqli_connect_errno()) {
    echo '數據庫連接出現了錯誤.錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  //設置一下編碼
  $_mysqli->set_charset('utf8');
  //創建一句SQL,獲取數據庫的表的數據
  $_sql = "SELECT * FROM tg_user";
  //創建一個結果集
  $_result = $_mysqli->query($_sql);
  //使用關聯數組取值
  //print_r($_result->fetch_assoc());
  $_assoc = $_result->fetch_assoc();
  echo $_assoc['tg_username'];
  //遍歷
  while (!!$_assoc = $_result->fetch_assoc()) {
    echo $_assoc['tg_username'].'<br />';
  }
  $_mysqli->close();
?>

Demo8.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //數據庫連接時發生的錯誤
  if (mysqli_connect_errno()) {
    echo '數據庫連接出現了錯誤.錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  //設置一下編碼
  $_mysqli->set_charset('utf8');
  //創建一句SQL,獲取數據庫的表的數據
  $_sql = "SELECT * FROM tg_user";
  //創建一個結果集
  $_result = $_mysqli->query($_sql);
  //使用索引+關聯數組取值
  //print_r($_result->fetch_array());
  $_array = $_result->fetch_array();
  echo $_array[3];
  echo $_array['tg_username'];
  //遍歷.....
  $_mysqli->close();
?>

Demo9.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //數據庫連接時發生的錯誤
  if (mysqli_connect_errno()) {
    echo '數據庫連接出現了錯誤.錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  //設置一下編碼
  $_mysqli->set_charset('utf8');
  //創建一句SQL,獲取數據庫的表的數據
  $_sql = "SELECT * FROM tg_user";
  //創建一個結果集
  $_result = $_mysqli->query($_sql);
  //使用OOP的方法object
  //print_r($_result->fetch_object());
  echo $_result->fetch_object()->tg_username;
  //使用OOP遍歷
  while (!!$_object = $_result->fetch_object()) {
    echo $_object->tg_username.'<br />';
  }
  $_mysqli->close();
?>

Demo10.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //數據庫連接時發生的錯誤
  if (mysqli_connect_errno()) {
    echo '數據庫連接出現了錯誤.錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  //設置一下編碼
  $_mysqli->set_charset('utf8');
  //創建一句SQL,獲取數據庫的表的數據
  $_sql = "SELECT * FROM tg_user limit 0,10";
  //創建一個結果集
  $_result = $_mysqli->query($_sql);
  //我要看下我選擇了多少行
  echo $_result->num_rows;
  //我影響了多少行呢
  echo $_mysqli->affected_rows;
  $_mysqli->close();
?>

Demo11.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //數據庫連接時發生的錯誤
  if (mysqli_connect_errno()) {
    echo '數據庫連接出現了錯誤.錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  //設置一下編碼
  $_mysqli->set_charset('utf8');
  //創建一句SQL,獲取數據庫的表的數據
  $_sql = "UPDATE tg_user SET tg_username='一站式建網站' WHERE tg_id=5";
  //創建一個結果集
  $_result = $_mysqli->query($_sql);
  //我要看下我選擇了多少行
  echo $_result->num_rows;
  echo '|';
  //我影響了多少行呢
  echo $_mysqli->affected_rows;
  $_mysqli->close();
?>

Demo12.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //數據庫連接時發生的錯誤
  if (mysqli_connect_errno()) {
    echo '數據庫連接出現了錯誤.錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  //設置一下編碼
  $_mysqli->set_charset('utf8');
  //創建一句SQL,獲取數據庫的表的數據
  $_sql = "SELECT * FROM tg_user";
  //創建一個結果集
  $_result = $_mysqli->query($_sql);
  //求出表中有多少個字段
  echo $_result->field_count;
  //獲取字段的名字
// $_field = $_result->fetch_field();
// echo $_field->name;
// $_field = $_result->fetch_field();
// echo $_field->name;
//
// while (!!$_field = $_result->fetch_field()) {
//   echo $_field->name.'<br />';
// }
  //一次性取得所有的字段
  $_fields = $_result->fetch_fields();
  //echo $_fields[0]->name;
  foreach ($_fields as $_field) {
    echo $_field->name.'<br />';
  }
  $_mysqli->close();
?>

Demo13.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //數據庫連接時發生的錯誤
  if (mysqli_connect_errno()) {
    echo '數據庫連接出現了錯誤.錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  //設置一下編碼
  $_mysqli->set_charset('utf8');
  //創建一句SQL,獲取數據庫的表的數據
  $_sql = "SELECT * FROM tg_user";
  //創建一個結果集
  $_result = $_mysqli->query($_sql);
  //移動數據指針
  $_result->data_seek(9);
  $_row = $_result->fetch_row();
  echo $_row[3];
  //移動字段指針
  $_result->field_seek(3);
  $_field = $_result->fetch_field();
  echo $_field->name;
  $_mysqli->close();
?>

Demo14.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //數據庫連接時發生的錯誤
  if (mysqli_connect_errno()) {
    echo '數據庫連接出現了錯誤.錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  //設置一下編碼
  $_mysqli->set_charset('utf8');
  //創建三個修改的SQL語句
  $_sql .= "UPDATE tg_article SET tg_username='喀喀喀' WHERE tg_id=1;";
  $_sql .= "UPDATE tg_flower SET tg_fromuser='喀喀喀' WHERE tg_id=1;";
  $_sql .= "UPDATE tg_friend SET tg_fromuser='喀喀喀' WHERE tg_id=1";
  //使用通知執行的方法
  $_mysqli->multi_query($_sql);
  //普通只能執行sql的方法是:$_mysqli->query($_sql);
  $_mysqli->close();
?>

Demo15.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //數據庫連接時發生的錯誤
  if (mysqli_connect_errno()) {
    echo '數據庫連接出現了錯誤.錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  //設置一下編碼
  $_mysqli->set_charset('utf8');
  //創建三條選擇語句
  $_sql .= "SELECT * FROM tg_photo;";
  $_sql .= "SELECT * FROM tg_user;";
  $_sql .= "SELECT * FROM tg_friend";
  if ($_mysqli->multi_query($_sql)) {
    //獲取當前的結果集
    $_result = $_mysqli->store_result();
    print_r($_result->fetch_row());
    echo '<br />';
    //將結果集的指針移到下一條
    $_mysqli->next_result();
    $_result = $_mysqli->store_result();
    if (!$_result) {
      echo '第二條SQL語句有五!';
      exit();
    }
    print_r($_result->fetch_row());
    echo '<br />';
    $_mysqli->next_result();
    $_result = $_mysqli->store_result();
    if (!$_result) {
      echo '第三條SQL語句有五!';
      exit();
    }
    print_r($_result->fetch_row());
  } else {
    echo '第一條SQL語句有誤';
    exit();
  }
  $_mysqli->close();
?>

Demo16.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //數據庫連接時發生的錯誤
  if (mysqli_connect_errno()) {
    echo '數據庫連接出現了錯誤.錯誤的信息是:'.mysqli_connect_error();
    exit();
  }
  //設置一下編碼
  $_mysqli->set_charset('utf8');
  //設置關閉自動提交(手工提交)
  $_mysqli->autocommit(false);
  //創建兩個SQL語句
  $_sql .= "UPDATE tg_flower SET tg_flower=tg_flower-50 WHERE tg_id=1;";
  $_sql .= "UPDATE tg_friend SET tg_state=tg_state+50 WHERE tg_id=1";
  //執行多條SQL語句
  //只要這兩條SQL語句都成功了,就手工提交給數據庫
  //否則,就回滾,撤銷之前的有效操作。
  if ($_mysqli->multi_query($_sql)) {
    //通過影響的行數,來判定SQL語句是否成功執行
    //如果$_success是false說明sql語句有吳,那麼就執行回滾,否則就手工提交
    $_success = $_mysqli->affected_rows == 1 ? true : false;
    //下移指針
    $_mysqli->next_result();
    $_success2 = $_mysqli->affected_rows == 1 ? true : false;
    //如果兩條都成功的話
    if ($_success && $_success2) {
      //執行手工提交
      $_mysqli->commit();
      echo '完美提交';
    } else {
      //執行回滾,撤銷之前的所有操作
      $_mysqli->rollback();
      echo '所有操作歸零!';
    }
  } else {
    echo '第一條SQL語句有錯誤!';
  }
  //再開啟自動提交
  $_mysqli->autocommit(true);
  $_mysqli->close();
?>

更多關於PHP相關內容感興趣的讀者可查看本站專題:《php+mysqli數據庫程序設計技巧總結》、《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《PHP網絡編程技巧總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved