乘风原创程序

  • PHP7原生MySQL数据库操作实现代码
  • 2020/7/3 9:05:17
  • 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 数据库操作方法的资料请关注脚本之家其它相关文章!