PHP7原生MySQL数据库操作实现代码
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 数据库操作方法的资料请关注其它相关文章!
上一篇: bytes2BSTR