PHP7原生MySQL数据库操作实现代码


Posted in PHP onJuly 03, 2020

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", "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";

// 创建连接

# 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。

发送一条 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,
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 "创建数据表错误: " . $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数据库操作实现代码的详细内容,更多关于php7 数据库操作方法的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
PHP 一个随机字符串生成代码
May 26 PHP
php生成随机密码的几种方法
Jan 17 PHP
php 面试碰到过的问题 在此做下记录
Jun 09 PHP
php防止恶意刷新与刷票的方法
Nov 21 PHP
PHP实用函数分享之去除多余的0
Feb 06 PHP
PHP SPL标准库之接口(Interface)详解
May 11 PHP
UTF-8正则表达式如何匹配汉字
Aug 03 PHP
Yii基于数组和对象的Model查询技巧实例详解
Dec 28 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
Apr 22 PHP
php微信开发之音乐回复功能
Jun 14 PHP
php新建文件的方法实例
Sep 26 PHP
Laravel ORM 数据model操作教程
Oct 21 PHP
PHP 超级全局变量相关总结
Jun 30 #PHP
详细分析PHP 命名空间(namespace)
Jun 30 #PHP
浅析PHP echo 和 print 语句
Jun 30 #PHP
PHP实现抽奖功能实例代码
Jun 30 #PHP
七种PHP开发环境搭建工具
Jun 28 #PHP
如何在PHP中使用AES加密算法加密数据
Jun 24 #PHP
基于PHP实现解密或加密Cloudflar邮箱保护
Jun 24 #PHP
You might like
学习php设计模式 php实现策略模式(strategy)
2015/12/07 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
限制复选框的最大可选数
2006/07/01 Javascript
JSON JQUERY模板实现说明
2010/07/03 Javascript
JavaScript中获取Radio被选中的值
2015/11/11 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
js重写方法的简单实现
2016/07/10 Javascript
jquery实现拖动效果
2016/08/10 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
vue父组件点击触发子组件事件的实例讲解
2018/02/08 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
Vue实例的对象参数options的几个常用选项详解
2019/11/08 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
对python中if语句的真假判断实例详解
2019/02/18 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
Python实现异步IO的示例
2020/11/05 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
宝宝周岁宴答谢词
2014/01/26 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
运动会演讲稿
2014/05/07 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python