PHP7原生MySQL數據庫操作實現(xiàn)代碼
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服務器??梢园丝谔枺J值為“l(fā)ocalhost:3306”
username:用戶名。默認值是服務器進程所有者的用戶名;
password:密碼。
dbname:數據庫名稱。
port:MySQL服務器的端口號,默認為3306。
- 返回值:如果連接成功,則返回 mysqli 連接對象。如果失敗,則返回 false。
實例代碼一
<?php $mysqli = new mysqli("localhost", "root", "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"; // 創(chuàng)建連接 # Tip: 如果你使用其他端口(默認為3306),為數據庫參數添加空字符串,如: new mysqli("localhost", "username", "password", "", 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。
發(fā)送一條 MySQL 查詢
mysqli_query(mysqliLink , queryStr)
- 參數:
query是查詢字符串;
link是創(chuàng)建的活動的數據庫連接;
- 說明:mysqli_query() 僅對 SELECT,SHOW 或 DESCRIBE 語句返回一個mysqli_result結果集對象,如果查詢執(zhí)行不正確則返回 FALSE。對于其它類型的 SQL 語句,mysqli_query()在執(zhí)行成功時返回 TRUE,出錯時返回 FALSE。非 FALSE 的返回值意味著查詢是合法的并能夠被服務器執(zhí)行。
- 注意:查詢字符串不應以分號結束,和命令行模式下有區(qū)別。
從結果集中取得一行作為關聯(lián)數組,或數字數組,或二者兼有
mysqli_fetch_array ( mysqliResult [, resultType] )
- 參數:resultType是一個常量,取值:MYSQLI_BOTH(兩者兼有,默認)、MYSQLI_ASSOC(關聯(lián)索引)、MYSQLI_NUM(數字索引)
- 返回:返回根據從結果集取得的行生成的數組,如果沒有更多行則返回 FALSE。
- 注意:本函數返回的字段名區(qū)分大小寫。
從結果集中取得所有行作為關聯(lián)數組、枚舉數組、或二者兼有
mysqli_fetch_all(mysqliResult [, resultType ])
- 參數:$result_type是一個常量,取值:MYSQLI_BOTH(兩者兼有,默認)、MYSQLI_ASSOC(關聯(lián)索引)、MYSQLI_NUM(數字索引)
- 返回:返回根據從結果集取得的行生成的數組,如果沒有更多行則返回 FALSE。
- 注意:本函數返回的字段名區(qū)分大小寫。
取得結果集中行的數目
mysqli_num_rows(mysqliResult)
- 注意:此命令僅對 SELECT 語句有效。
從結果集中取得一行作為關聯(lián)數組
array mysqli_fetch_assoc(mysqliResult)
- 返回值:從結果集取得的行生成的關聯(lián)數組,如果沒有更多行則返回 FALSE;
- 注意:此函數返回的字段名大小寫敏感。
取得前一次 MySQL 操作所影響的記錄行數
mysqli_affected_rows ( mysqliLink )
- 說明:取得最近一次與 $link 關聯(lián)的 SELECT、INSERT、UPDATE 或 DELETE 查詢所影響的記錄行數。
- 注意:如果最近一次查詢失敗,函數返回-1。當使用UPDATE查詢,MySQL不會將原值和新值一樣的值更新,返回值不一定就是查詢條件所符合的記錄,只有修改過的記錄數才會被返回。
釋放與結果集相關聯(lián)的內存
mysqli_free_result(mysqliResult)
- 參數:mysqliResult為結果集對象。
返回上一個 MySQL 連接產生的文本錯誤信息
mysqli_connect_error()
- 參數:沒有參數
php7創(chuàng)建數據庫:
方法一:
$sql = "CREATE DATABASE myDB3"; if (mysqli_query($conn, $sql)) { echo "數據庫創(chuàng)建成功"; } 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 "數據庫創(chuàng)建成功"; } else { echo "Error creating database: " . $conn->error; }
創(chuàng)建表的方法:
方法一:
// 使用 sql 創(chuàng)建數據表 $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 創(chuàng)建成功"; } else { echo "創(chuàng)建數據表錯誤: " . mysqli_error($conn); }
方法二:
// 使用 sql 創(chuàng)建數據表 $sql = "CREATE TABLE MyGuests2 ( 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 ($conn->query($sql) === TRUE) { echo "Table MyGuests created successfully"; } else { echo "創(chuàng)建數據表錯誤: " . $conn->error; }
插入數據的方法:
方法一:
$sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')"; if (mysqli_query($conn, $sql)) { echo "新記錄插入成功"; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); }
方法二:
$sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')"; if ($conn->query($sql) === TRUE) { echo "新記錄插入成功"; } else { echo "Error: " . $sql . "<br>" . $conn->error; }
插入多條數據的方法:
方法一:
$sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Mary', 'Moe', 'mary@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Julie', 'Dooley', 'julie@example.com')"; if (mysqli_multi_query($conn, $sql)) { echo "新記錄插入成功"; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); }
方法二:
$sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('22', 'Doe', 'john@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('22', 'Moe', 'mary@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('22', 'Dooley', 'julie@example.com')"; 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, firstname, 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, $dbuser, $dbpw, $dbname); } function connect($dbhost, $dbuser, $dbpw, $dbname) { // global $dbcharset; if(!$this->link = @mysqli_connect($dbhost, $dbuser, $dbpw, $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, 0, strlen($columnName) - 1); $columnValue = substr($columnValue, 0, 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, 0, 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 .= "<b>error</b>: ".htmlspecialchars($this->error())."\n<br />"; $msg .= "<b>error number</b>: ".$this->errno()."\n<br />"; $msg .= "<b>Date</b>: ".date("Y-m-d @ H:i")."\n<br />"; $msg .= "<b>Script File</b>: http://".$_SERVER['HTTP_HOST'].getenv("REQUEST_URI")."\n<br />"; $msg .= "</body>\n</html>"; echo $msg; exit; } } ?>
以上就是PHP7原生MySQL數據庫操作實現(xiàn)代碼的詳細內容,更多關于php7 數據庫操作方法的資料請關注腳本之家其它相關文章!
相關文章
如何在smarty中增加類似foreach的功能自動加載數據
本篇文章是對在smarty中增加類似foreach的功能自動加載數據進行了詳細的分析介紹,需要的朋友參考下2013-06-06將FCKeditor導入PHP+SMARTY的實現(xiàn)方法
這篇文章主要介紹了將FCKeditor導入PHP+SMARTY的實現(xiàn)方法,涉及整合FCKeditor與SMARTY的技巧,非常具有實用價值,需要的朋友可以參考下2015-01-01