热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

php7已经没有mysql这个扩展了,好多贴还是按照以前的方法讲,让我这个新手来回找了好多遍都没找到mysql,php7用后面两个链接数据库,千万不要傻傻去找也不要去来回拷贝什么dll之类的

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。

实例代码一

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

localhost 意思是本地主机,如果你是在自己电脑上的话,这项就不用改了
root是mysql的用户名,如果你是默认的没有修改,也不用管,直接copy
password 这事mysql的密码,如果你没有试着的话,直接写空的就行,""这样哦

代码二

<&#63;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);
&#63;>

代码三

<&#63;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();
&#63;>

选择当前数据库

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 . "
" . 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 . "
" . $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 . "
" . 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 . "
" . $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"]. "
"; } } 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"]. "
"; } } else { echo "0 结果"; }

看到这里小编再为大家分享一个整理好的类库

<&#63;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 &#63; " WHERE $where" : null;
   $this->query($sql);
  }
	 function delete($tableName, $where = ""){
   $sql = "DELETE FROM $tableName";
   $sql .= $where &#63; " WHERE $where" : null;
   $this->query($sql);
  }
	 function select($tableName, $columnName = "*", $where = "") {
   $sql = "SELECT " . $columnName . " FROM " . $tableName;
   $sql .= $where &#63; " 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 &#63; $id : $this->result($this->query("SELECT last_insert_id()"), 0);
	}


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

 function error() {
  return (($this->link) &#63; mysqli_error($this->link) : '');
 }
 //返回错误信息 
 function errno() {
  return intval(($this->link) &#63; mysqli_errno($this->link) : '');
 }

	function halt($msg = '') {
  global $charset;
		$msg = "\n\n";
		$msg .= "\n";
		$msg .= "\n";
		$msg .= "\n";
		$msg .= "\n";
		$msg .= "error: ".htmlspecialchars($this->error())."\n
"; $msg .= "error number: ".$this->errno()."\n
"; $msg .= "Date: ".date("Y-m-d @ H:i")."\n
"; $msg .= "Script File: http://".$_SERVER['HTTP_HOST'].getenv("REQUEST_URI")."\n
"; $msg .= "\n"; echo $msg; exit; } } &#63;>

 以上就是PHP7原生MySQL数据库操作实现代码的详细内容,更多关于php7 数据库操作方法的资料请关注其它相关文章!


推荐阅读
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文介绍了一种在PHP中对二维数组根据某个字段进行排序的方法,以年龄字段为例,按照倒序的方式进行排序,并给出了具体的代码实现。 ... [详细]
  • 本文介绍了一种图片处理应用,通过固定容器来实现缩略图的功能。该方法可以实现等比例缩略、扩容填充和裁剪等操作。详细的实现步骤和代码示例在正文中给出。 ... [详细]
  • 给定一个二维平面上的一些点,通过计算曼哈顿距离,求连接所有点的最小总费用。只有任意两点之间有且仅有一条简单路径时,才认为所有点都已连接。给出了几个示例并给出了对应的输出。 ... [详细]
author-avatar
北京馨香海棠
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有