php7中mysql的連接與使用與PHP5中大不相同
PHP5中mysql_connect()等函數(shù)大多被PHP7中類的成員函數(shù)所代替。PHP5中連接mysql是過程性的,而PHP7中強(qiáng)調(diào)了類的使用與面向?qū)ο蟮姆椒?/p>
$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);
查詢語句也變成了類的成員函數(shù)
連接到 MySQL服務(wù)器
mysqli_connect(host, username, password [,dbname] [,port]);
- 參數(shù):
host:MySQL服務(wù)器??梢园丝谔枺J(rèn)值為“l(fā)ocalhost:3306”
username:用戶名。默認(rèn)值是服務(wù)器進(jìn)程所有者的用戶名;
password:密碼。
dbname:數(shù)據(jù)庫名稱。
port:MySQL服務(wù)器的端口號,默認(rèn)為3306。
- 返回值:如果連接成功,則返回 mysqli 連接對象。如果失敗,則返回 false。
實(shí)例代碼一
?php
$mysqli = new mysqli("localhost", "root", "password", "testgame");
if(!$mysqli) {
echo"database error";
}else{
echo"php env successful";
}
$mysqli->close();
?>
localhost 意思是本地主機(jī),如果你是在自己電腦上的話,這項(xiàng)就不用改了
root是mysql的用戶名,如果你是默認(rèn)的沒有修改,也不用管,直接copy
password 這事mysql的密碼,如果你沒有試著的話,直接寫空的就行,""這樣哦
代碼二
?php
/* Connect to a MySQL server 連接數(shù)據(jù)庫服務(wù)器 */
$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 連接數(shù)據(jù)庫名稱*/
if (!$link) {
printf("Can't connect to MySQL Server. Errorcode: %s ", mysqli_connect_error());
exit;
}else
echo '數(shù)據(jù)庫連接上了!';
/* Close the connection 關(guān)閉連接*/
mysqli_close($link);
?>
代碼三
?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "myDB";
// 創(chuàng)建連接
# Tip: 如果你使用其他端口(默認(rèn)為3306),為數(shù)據(jù)庫參數(shù)添加空字符串,如: new mysqli("localhost", "username", "password", "", port)
$conn = new mysqli($servername, $username, $password,$dbname);
// 檢測連接
if ($conn->connect_error) {
die("連接失敗: " . $conn->connect_error);
}
echo "連接成功";
$conn->close();
?>
選擇當(dāng)前數(shù)據(jù)庫
mysqli_select_db(mysqliLink, database)
- 描述:一個數(shù)據(jù)庫服務(wù)器可能包含很多的數(shù)據(jù)庫,通常需要針對某個具體的數(shù)據(jù)庫進(jìn)行編程
- 返回值:如果成功返回TRUE,失敗則返回FALSE
設(shè)置客戶端字符集
mysqli_set_charset(mysqliLink, charset)
- 描述:設(shè)置默認(rèn)字符編碼
- 返回:成功時返回 TRUE, 或者在失敗時返回 FALSE。
發(fā)送一條 MySQL 查詢
mysqli_query(mysqliLink , queryStr)
- 參數(shù):
query是查詢字符串;
link是創(chuàng)建的活動的數(shù)據(jù)庫連接;
- 說明:mysqli_query() 僅對 SELECT,SHOW 或 DESCRIBE 語句返回一個mysqli_result結(jié)果集對象,如果查詢執(zhí)行不正確則返回 FALSE。對于其它類型的 SQL 語句,mysqli_query()在執(zhí)行成功時返回 TRUE,出錯時返回 FALSE。非 FALSE 的返回值意味著查詢是合法的并能夠被服務(wù)器執(zhí)行。
- 注意:查詢字符串不應(yīng)以分號結(jié)束,和命令行模式下有區(qū)別。
從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組,或數(shù)字?jǐn)?shù)組,或二者兼有
mysqli_fetch_array ( mysqliResult [, resultType] )
- 參數(shù):resultType是一個常量,取值:MYSQLI_BOTH(兩者兼有,默認(rèn))、MYSQLI_ASSOC(關(guān)聯(lián)索引)、MYSQLI_NUM(數(shù)字索引)
- 返回:返回根據(jù)從結(jié)果集取得的行生成的數(shù)組,如果沒有更多行則返回 FALSE。
- 注意:本函數(shù)返回的字段名區(qū)分大小寫。
從結(jié)果集中取得所有行作為關(guān)聯(lián)數(shù)組、枚舉數(shù)組、或二者兼有
mysqli_fetch_all(mysqliResult [, resultType ])
- 參數(shù):$result_type是一個常量,取值:MYSQLI_BOTH(兩者兼有,默認(rèn))、MYSQLI_ASSOC(關(guān)聯(lián)索引)、MYSQLI_NUM(數(shù)字索引)
- 返回:返回根據(jù)從結(jié)果集取得的行生成的數(shù)組,如果沒有更多行則返回 FALSE。
- 注意:本函數(shù)返回的字段名區(qū)分大小寫。
取得結(jié)果集中行的數(shù)目
mysqli_num_rows(mysqliResult)
- 注意:此命令僅對 SELECT 語句有效。
從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組
array mysqli_fetch_assoc(mysqliResult)
- 返回值:從結(jié)果集取得的行生成的關(guān)聯(lián)數(shù)組,如果沒有更多行則返回 FALSE;
- 注意:此函數(shù)返回的字段名大小寫敏感。
取得前一次 MySQL 操作所影響的記錄行數(shù)
mysqli_affected_rows ( mysqliLink )
- 說明:取得最近一次與 $link 關(guān)聯(lián)的 SELECT、INSERT、UPDATE 或 DELETE 查詢所影響的記錄行數(shù)。
- 注意:如果最近一次查詢失敗,函數(shù)返回-1。當(dāng)使用UPDATE查詢,MySQL不會將原值和新值一樣的值更新,返回值不一定就是查詢條件所符合的記錄,只有修改過的記錄數(shù)才會被返回。
釋放與結(jié)果集相關(guān)聯(lián)的內(nèi)存
mysqli_free_result(mysqliResult)
- 參數(shù):mysqliResult為結(jié)果集對象。
返回上一個 MySQL 連接產(chǎn)生的文本錯誤信息
mysqli_connect_error()
- 參數(shù):沒有參數(shù)
php7創(chuàng)建數(shù)據(jù)庫:
方法一:
$sql = "CREATE DATABASE myDB3";
if (mysqli_query($conn, $sql)) {
echo "數(shù)據(jù)庫創(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 "數(shù)據(jù)庫創(chuàng)建成功";
} else {
echo "Error creating database: " . $conn->error;
}
創(chuàng)建表的方法:
方法一:
// 使用 sql 創(chuàng)建數(shù)據(jù)表
$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 "數(shù)據(jù)表 MyGuests 創(chuàng)建成功";
} else {
echo "創(chuàng)建數(shù)據(jù)表錯誤: " . mysqli_error($conn);
}
方法二:
// 使用 sql 創(chuàng)建數(shù)據(jù)表
$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)建數(shù)據(jù)表錯誤: " . $conn->error;
}
插入數(shù)據(jù)的方法:
方法一:
$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;
}
插入多條數(shù)據(jù)的方法:
方法一:
$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;
}
查詢數(shù)據(jù)庫的方法:
方法一:
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// 輸出數(shù)據(jù)
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "br>";
}
} else {
echo "0 結(jié)果";
}
方法二:
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 輸出數(shù)據(jù)
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "br>";
}
} else {
echo "0 結(jié)果";
}
看到這里腳本之家小編再為大家分享一個整理好的類庫
?php
/**
* 數(shù)據(jù)庫操作類
*/
!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);
}
// 取得一條數(shù)據(jù)記錄
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;
}
}
//取影響條數(shù)
function affected_rows() {
return mysqli_affected_rows($this->link);
}
//從結(jié)果集中取得一行作為枚舉數(shù)組
function fetch_row($query) {
return mysqli_fetch_row($query);
}
// 結(jié)果條數(shù)
function num_rows($query) {
return mysqli_num_rows($query);
}
// 取字段總數(shù)
function num_fields($query) {
return mysqli_num_fields($query);
}
// 返回查詢結(jié)果
function result($query, $row) {
$query = mysqli_result($query, $row);
return $query;
}
//釋放結(jié)果集
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>\nhead>\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())."\nbr />";
$msg .= "b>error number/b>: ".$this->errno()."\nbr />";
$msg .= "b>Date/b>: ".date("Y-m-d @ H:i")."\nbr />";
$msg .= "b>Script File/b>: http://".$_SERVER['HTTP_HOST'].getenv("REQUEST_URI")."\nbr />";
$msg .= "/body>\n/html>";
echo $msg;
exit;
}
}
?>
以上就是PHP7原生MySQL數(shù)據(jù)庫操作實(shí)現(xiàn)代碼的詳細(xì)內(nèi)容,更多關(guān)于php7 數(shù)據(jù)庫操作方法的資料請關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:- MacOS下PHP7.1升級到PHP7.4.15的方法
- php7和php5具體區(qū)別實(shí)例講解
- php7 參數(shù)、整形及字符串處理機(jī)制修改實(shí)例分析
- php7 錯誤處理機(jī)制修改實(shí)例分析
- php7 list()、session及其他模塊的修改實(shí)例分析
- php5.6.x到php7.0.x特性小結(jié)
- PHP7.1實(shí)現(xiàn)的AES與RSA加密操作示例
- php7函數(shù),聲明,返回值等新特性介紹
- 可兼容php5與php7的cURL文件上傳功能實(shí)例分析
- php7和php5的詳細(xì)對比