1. 程式人生 > 程式設計 >PHP7原生MySQL資料庫操作實現程式碼

PHP7原生MySQL資料庫操作實現程式碼

php7中mysql的連線與使用與PHP5中大不相同

PHP5中mysql_connect()等函式大多被PHP7中類的成員函式所代替。PHP5中連線mysql是過程性的,而PHP7中強調了類的使用與面向物件的方法

$user = new mysqli();

//Connect to mysql
$user->connect("localhost","root","q721@Ms67","Student");

mysql的連線被mysqli類所替代

//Search in mysql
$query = 'SELECT * FROM users';
//Use a variable to save result
$result = $user->query($query);

查詢語句也變成了類的成員函式

連線到 MySQL伺服器

mysqli_connect(host,username,password [,dbname] [,port]);
- 引數:
host:MySQL伺服器。可以包含埠號,預設值為“localhost:3306”
username:使用者名稱。預設值是伺服器程序所有者的使用者名稱;
password:密碼。
dbname:資料庫名稱。
port:MySQL伺服器的埠號,預設為3306。
- 返回值:如果連線成功,則返回 mysqli 連線物件。如果失敗,則返回 false。

例項程式碼一

<?php
  $mysqli = new mysqli("localhost","password","testgame");
  if(!$mysqli) {
    echo"database error";
  }else{
    echo"php env successful";
  }
  $mysqli->close();
?>

localhost 意思是本地主機,如果你是在自己電腦上的話,這項就不用改了
root是mysql的使用者名稱,如果你是預設的沒有修改,也不用管,直接copy
password 這事mysql的密碼,如果你沒有試著的話,直接寫空的就行,""這樣哦

程式碼二

<?php
/* Connect to a MySQL server 連線資料庫伺服器 */
$link = mysqli_connect(
'localhost',/* The host to connect to 連線MySQL地址 */
'root',/* The user to connect as 連線MySQL使用者名稱 */
'root',/* The password to use 連線MySQL密碼 */
'lucax_database'); /* The default database to query 連線資料庫名稱*/

if (!$link) {
printf("Can't connect to MySQL Server. Errorcode: %s ",mysqli_connect_error());
exit;
}else
echo '資料庫連線上了!';

/* Close the connection 關閉連線*/
mysqli_close($link);
?>

程式碼三

<?php
$servername = "localhost";
$username = "root";
$password = "root";

$dbname = "myDB";

// 建立連線

# Tip: 如果你使用其他埠(預設為3306),為資料庫引數新增空字串,如: new mysqli("localhost","username","",port)
$conn = new mysqli($servername,$username,$password,$dbname);

// 檢測連線
if ($conn->connect_error) {
die("連線失敗: " . $conn->connect_error);
}
echo "連線成功";

$conn->close();
?>

選擇當前資料庫

mysqli_select_db(mysqliLink,database)
- 描述:一個數據庫伺服器可能包含很多的資料庫,通常需要針對某個具體的資料庫進行程式設計
- 返回值:如果成功返回TRUE,失敗則返回FALSE

設定客戶端字符集

mysqli_set_charset(mysqliLink,charset)
- 描述:設定預設字元編碼
- 返回:成功時返回 TRUE, 或者在失敗時返回 FALSE。

傳送一條 MySQL 查詢

mysqli_query(mysqliLink,queryStr)
- 引數:
query是查詢字串;
link是建立的活動的資料庫連線;
- 說明:mysqli_query() 僅對 SELECT,SHOW 或 DESCRIBE 語句返回一個mysqli_result結果集物件,如果查詢執行不正確則返回 FALSE。對於其它型別的 SQL 語句,mysqli_query()在執行成功時返回 TRUE,出錯時返回 FALSE。非 FALSE 的返回值意味著查詢是合法的並能夠被伺服器執行。
- 注意:查詢字串不應以分號結束,和命令列模式下有區別。

從結果集中取得一行作為關聯陣列,或數字陣列,或二者兼有

mysqli_fetch_array ( mysqliResult [,resultType] )
- 引數:resultType是一個常量,取值:MYSQLI_BOTH(兩者兼有,預設)、MYSQLI_ASSOC(關聯索引)、MYSQLI_NUM(數字索引)
- 返回:返回根據從結果集取得的行生成的陣列,如果沒有更多行則返回 FALSE。
- 注意:本函式返回的欄位名區分大小寫。

從結果集中取得所有行作為關聯陣列、列舉陣列、或二者兼有

mysqli_fetch_all(mysqliResult [,resultType ])
- 引數:$result_type是一個常量,取值:MYSQLI_BOTH(兩者兼有,預設)、MYSQLI_ASSOC(關聯索引)、MYSQLI_NUM(數字索引)
- 返回:返回根據從結果集取得的行生成的陣列,如果沒有更多行則返回 FALSE。
- 注意:本函式返回的欄位名區分大小寫。

取得結果集中行的數目

mysqli_num_rows(mysqliResult)
- 注意:此命令僅對 SELECT 語句有效。

從結果集中取得一行作為關聯陣列

array mysqli_fetch_assoc(mysqliResult)
- 返回值:從結果集取得的行生成的關聯陣列,如果沒有更多行則返回 FALSE;
- 注意:此函式返回的欄位名大小寫敏感。

取得前一次 MySQL 操作所影響的記錄行數

mysqli_affected_rows ( mysqliLink )
- 說明:取得最近一次與 $link 關聯的 SELECT、INSERT、UPDATE 或 DELETE 查詢所影響的記錄行數。
- 注意:如果最近一次查詢失敗,函式返回-1。當使用UPDATE查詢,MySQL不會將原值和新值一樣的值更新,返回值不一定就是查詢條件所符合的記錄,只有修改過的記錄數才會被返回。

釋放與結果集相關聯的記憶體

mysqli_free_result(mysqliResult)
- 引數:mysqliResult為結果集物件。

返回上一個 MySQL 連線產生的文字錯誤資訊

mysqli_connect_error()
- 引數:沒有引數

php7建立資料庫:

方法一:

$sql = "CREATE DATABASE myDB3";
if (mysqli_query($conn,$sql)) {
echo "資料庫建立成功";
} else {
echo "Error creating database: " . mysqli_error($conn);
}

方法二:

// 檢測連線
if ($conn->connect_error) {
  die("連線失敗: " . $conn->connect_error);
}
echo "連線成功";

$sql = "CREATE DATABASE myDB2";
if ($conn->query($sql) === TRUE) {
  echo "資料庫建立成功";
} else {
  echo "Error creating database: " . $conn->error;
}

建立表的方法:

方法一:

// 使用 sql 建立資料表
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,firstname VARCHAR(30) NOT NULL,lastname VARCHAR(30) NOT NULL,email VARCHAR(50),reg_date TIMESTAMP
)";

if (mysqli_query($conn,$sql)) {
echo "資料表 MyGuests 建立成功";
} else {
echo "建立資料表錯誤: " . mysqli_error($conn);
}

方法二:

// 使用 sql 建立資料表
$sql = "CREATE TABLE MyGuests2 (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,reg_date TIMESTAMP
)";

if ($conn->query($sql) === TRUE) {
echo "Table MyGuests created successfully";
} else {
echo "建立資料表錯誤: " . $conn->error;
}

插入資料的方法:

方法一:

$sql = "INSERT INTO MyGuests (firstname,lastname,email)
VALUES ('John','Doe','[email protected]')";

if (mysqli_query($conn,$sql)) {
echo "新記錄插入成功";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

方法二:

$sql = "INSERT INTO MyGuests (firstname,'[email protected]')";

if ($conn->query($sql) === TRUE) {
echo "新記錄插入成功";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}

插入多條資料的方法:

方法一:

$sql = "INSERT INTO MyGuests (firstname,'[email protected]');";
$sql .= "INSERT INTO MyGuests (firstname,email)
VALUES ('Mary','Moe','[email protected]');";
$sql .= "INSERT INTO MyGuests (firstname,email)
VALUES ('Julie','Dooley','[email protected]')";

if (mysqli_multi_query($conn,$sql)) {
echo "新記錄插入成功";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

方法二:

$sql = "INSERT INTO MyGuests (firstname,email)
VALUES ('22','[email protected]')";

if ($conn->multi_query($sql) === TRUE) {
echo "新記錄插入成功";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}

查詢資料庫的方法:

方法一:

$sql = "SELECT id,firstname,lastname FROM MyGuests";
$result = mysqli_query($conn,$sql);

if (mysqli_num_rows($result) > 0) {
// 輸出資料
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 結果";
}

方法二:

$sql = "SELECT id,lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
// 輸出資料
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 結果";
}

看到這裡我們小編再為大家分享一個整理好的類庫

<?php
/** 
* 資料庫操作類
*/
!defined('ROOTNAME') && exit('FORBIDDEN');
class db_mysql{
	var $query_num = 0;
	var $link;
	
	function __construct($dbhost,$dbuser,$dbpw,$dbname) {
		$this->connect($dbhost,$dbname);
	}

	function connect($dbhost,$dbname) {
//    global $dbcharset;
    if(!$this->link = @mysqli_connect($dbhost,$dbname)) {
    	$this->halt("Can not connect to MySQL server");
    }
    
		if($this->server_info() > '5.0'){
			mysqli_query($this->link,"SET sql_mode=''");
		}
		/*
		if($dbname) {
			if (!@mysqli_select_db($dbname,$this->link)){
				$this->halt('Cannot use database '.$dbname);
			}
		}*/
	}

	function select_db($dbname) {
		$this->dbname = $dbname;
		if (!@mysqli_select_db($dbname,$this->link)){
			$this->halt('Cannot use database '.$dbname);
		}
	}

	function server_info() {
		return mysqli_get_server_info($this->link);
	}
	
	function version() {
		return mysqli_get_server_info($this->link);
	}
	
	
	function insert($tableName,$column = array()) {
     $columnName = "";
     $columnValue = "";
     foreach ($column as $key => $value) {
       $columnName .= $key . ",";
       $columnValue .= "'" . $value . "',";
     }
     $columnName = substr($columnName,strlen($columnName) - 1);
     $columnValue = substr($columnValue,strlen($columnValue) - 1);
     $sql = "INSERT INTO $tableName($columnName) VALUES($columnValue)";
     $this->query($sql);
   }
	 
	function update($tableName,$column = array(),$where = "") {
     $updateValue = "";
     foreach ($column as $key => $value) {
       $updateValue .= $key . "='" . $value . "',";
     }
     $updateValue = substr($updateValue,strlen($updateValue) - 1);
     $sql = "UPDATE $tableName SET $updateValue";
     $sql .= $where ? " WHERE $where" : null;
     $this->query($sql);
   }
	 function delete($tableName,$where = ""){
     $sql = "DELETE FROM $tableName";
     $sql .= $where ? " WHERE $where" : null;
     $this->query($sql);
   }
	 function select($tableName,$columnName = "*",$where = "") {
     $sql = "SELECT " . $columnName . " FROM " . $tableName;
     $sql .= $where ? " WHERE " . $where : null;
     $this->query($sql);
   }
	 function get_all($sql,$result_type = MYSQLI_ASSOC) {
    $query = $this->query($sql);
    $i = 0;
    $rt = array();
    while($row =& mysqli_fetch_array($query,$result_type)) {
      $rt[$i]=$row;
      $i++;
    }
    //$this->write_log("獲取全部記錄 ".$sql);
    return $rt;
  }


  function fetchRow($query){
    return mysqli_fetch_assoc($query);
  }
	
	function query($sql) {
    //$this->write_log("查詢 ".$sql);
		mysqli_query($this->link,"set names utf8");
    $query = mysqli_query($this->link,$sql);
    //if(!$query) $this->halt('Query Error: ' . $sql);
    return $query;
  }
	//獲取第一個欄位值
  function getOne($sql,$limited = false){
    if ($limited == true){
      $sql = trim($sql . ' LIMIT 1');
    }

    $res = $this->query($sql);
    if ($res !== false){
      $row = mysqli_fetch_row($res);

      if ($row !== false){
        return $row[0];
      }else{
        return '';
      }
    }else{
      return false;
    }
  }
	
	
	function fetch_array($query,$result_type = MYSQLI_ASSOC) {
    return mysqli_fetch_array($query,$result_type);
  }
	
	//輸出記錄
	function fetch_first($sql) {
		$res=$this->query($sql);
		return $this->fetch_array($res,MYSQLI_ASSOC);
	}
	
	// 取得一條資料記錄
	function get_one($sql,$result_type = MYSQLI_ASSOC){
		$result = $this->query($sql);
		$record = $this->fetch_array($result,$result_type);
		return $record;
	}

  function getRow($sql,$limited = false){
    if ($limited == true){
      $sql = trim($sql . 'LIMIT 1');
    }

    $res = $this->query($sql);
    if ($res !== false){
      return mysqli_fetch_assoc($res);
    }else{
      return false;
    }
  }

  
  //取影響條數 
	function affected_rows() {
		return mysqli_affected_rows($this->link);
	}
	//從結果集中取得一行作為列舉陣列 
	function fetch_row($query) {
		return mysqli_fetch_row($query);
	}
	// 結果條數
	function num_rows($query) {
		return mysqli_num_rows($query);
	}
	// 取欄位總數 
	function num_fields($query) {
		return mysqli_num_fields($query);
	}
	// 返回查詢結果
	function result($query,$row) {
		$query = mysqli_result($query,$row);
		return $query;
	}
	//釋放結果集 
	function free_result($query) {
		return mysqli_free_result($query);
	}
	//返回自增ID 
	function insert_id() {
		return ($id = mysqli_insert_id($this->link)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"),0);
	}


	function close() {
		return mysqli_close($this->link);
	}

  function error() {
    return (($this->link) ? mysqli_error($this->link) : '');
  }
  //返回錯誤資訊 
  function errno() {
    return intval(($this->link) ? mysqli_errno($this->link) : '');
  }

	function halt($msg = '') {
    global $charset;
		$msg = "<html>\n<head>\n";
		$msg .= "<meta content=\"text/html; charset=$charset\" http-equiv=\"Content-Type\">\n";
		$msg .= "<style type=\"text/css\">\n";
		$msg .= "body,p,pre {\n";
		$msg .= "font:12px Verdana;\n";
		$msg .= "}\n";
		$msg .= "</style>\n";
		$msg .= "</head>\n";
		$msg .= "<body bgcolor=\"#FFFFFF\" text=\"#000000\" link=\"#006699\" vlink=\"#5493B4\">\n";
		$msg .= "error: ".htmlspecialchars($this->error())."\n<br />";
		$msg .= "error number: ".$this->errno()."\n<br />";
		$msg .= "Date: ".date("Y-m-d @ H:i")."\n<br />";
		$msg .= "Script File: http://".$_SERVER['HTTP_HOST'].getenv("REQUEST_URI")."\n<br />";

		$msg .= "</body>\n</html>";
		echo $msg;
		exit;
	}
}
?>

以上就是PHP7原生MySQL資料庫操作實現程式碼的詳細內容,更多關於php7 資料庫操作方法的資料請關注我們其它相關文章!