php可以通过三种方式操作数据库,分别用mysql扩展库,mysqli扩展库,和mysqli的预处理模式分别举案例加以说明

1.通过mysql方式操作数据库
工具类核心代码:
<?php
class SqlTool{
private $conn = null;
private $host = "localhost";
private $username = "root";
private $password = "254416";
function __construct(){
$this->conn = mysql_connect($this->host,$this->username,$this->password);
if(!$this->conn){
die("数据库链接失败".mysql_error());
}
//选择数据库
mysql_select_db("test") or die("数据库不存在".mysql_error()) ;
//设置编码
mysql_set_charset ( "utf8",$this->conn);
//mysql_query("set names utf8");
}
function execute_dql($sql){
$res = mysql_query($sql,$this->conn);
if(!$res){
die("数据查询失败");
}else{
return $res;
}
}
function execute_dml($sql){
$res = mysql_query($sql,$this->conn);
if(!$res){
echo mysql_error();
return -1;
}else{
if(mysql_affected_rows($this->conn)>0){
return 1;
}else{
return 0;
}
}
}
} ?>
 
 
2.通过mysqli扩展库操作mysql
工具类核心代码:
<?php
class SqlTool{
private $host = "localhost";
private $username = "root";
private $password = "254416";
private $db = "test";
private static $mysqli = null;
function __construct(){
//新建链接
self::$mysqli = new MySQLi($this->host,$this->username,$this->password,$this->db);
if(self::$mysqli->connect_error){
die("数据库连接失败".self::$mysqli->connect_error);
}
//设置编码
self::$mysqli->set_charset("utf8");
}
function execute_dql($sql){
$res = self::$mysqli->query($sql);
return $res;
}
function queryfiledname($sql){
$filedname = self::$mysqli->query($sql);
return $filedname;
}
function execute_dml($sql){
$b = self::$mysqli->query($sql);
if(!$b){
return -1;
}else{
if(self::$mysqli->affected_rows>0){
return 1;
}else{
return 0;
}
}
}
}
?>
3.mysqli扩展库的预处理方式
处理dml语句:
<?php
header("Content-type: text/html;charset=utf-8");
//建立链接
$mysqli = new MySQLi("localhost","root","254416","test");
$sql = "insert into user (username,password,email,address,age) values (?,?,?,?,?)";
//设置编码
$mysqli->query("SET NAMES utf8");
//数据库预处理
$mysqli_stmt = $mysqli->prepare($sql) or die("数据库预处理失败");
//绑定参数
$name="小倩";
$password = "123";
$email = "xiaoqian@suhu.com";
$address = "郑州";
$age = 20;
$mysqli_stmt->bind_param("ssssi",$name,$password,$email,$address,$age) or die("绑定参数失败");
//执行
$b = $mysqli_stmt->execute();
if(!$b){
die("预处理执行失败");
}
echo "添加成功";
$mysqli_stmt->close();
?>
处理dql语句:
<?php
header("Content-type: text/html;charset=utf-8");
$mysqli = new MySQLi("localhost","root","254416","test");
$mysqli->query("set names utf8");
$sql="select * from user where id>?";
$mysqli_stmt = $mysqli->prepare($sql) or die("数据库预处理失败");
$id=20;
$mysqli_stmt->bind_param("i",$id) or die("参数绑定失败");
$mysqli_stmt->bind_result($id,$username,$password,$email,$address,$age) or ("绑定结果集失败");
$b = $mysqli_stmt->execute();
if(!$b){
die("数据库预处操作理失败");
}
while($mysqli_stmt->fetch()){
echo "--$id--$username";
}
$mysqli_stmt->free_result();
$mysqli_stmt->close();
$mysqli->close();
?>

php三种方式操作mysql数据库的更多相关文章

  1. php连接MySQL数据库的三种方式(mysql/mysqli/pdo)

    引言 PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案 ...

  2. JavaEE系列之(三)JDBC操作MySQL数据库

    一.JDBC简介        JDBC(Java Data Base Connectivity)java数据库连接        SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库 ...

  3. 不使用spring的情况下原生java代码两种方式操作mongodb数据库

    由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...

  4. 三种方法查看MySQL数据库的版本

    1.使用-V参数 首先我们想到的肯定就是查看版本号的参数命令,参数为-V(大写字母)或者--version 使用方法: D:\xampp\mysql\bin>mysql -V 或者 D:\xam ...

  5. 用EF的三种方式(SqlServer数据库和Oracle数据库)

    SqlServer数据库 1.DB First 现有DB,生成edmx文件 贴一下生成的model //------------------------------------------------ ...

  6. 【OpenCV】三种方式操作图像像素

    OpenCV中,有3种访问每个像素的方法:使用at方法.使用迭代器方法.使用指针 运行如下程序后可以发现使用at方法速度最快. 代码如下: //操作图像像素 #include <opencv2/ ...

  7. php笔记08:数据库编程---使用php的MySQL扩展库操作MySQL数据库

    1.使用php的MySQL扩展库操作MySQL数据库: php有3种方式操作MySQL数据库 (1)mysql扩展库 (2)mysqli扩展库 (3)pdo     mysql扩展库与mysql数据库 ...

  8. 【tips】ORM - SQLAlchemy操作MySQL数据库

    优先(官方文档SQLAlchemy-version1.2): sqlalchemy | 作者:斯芬克斯 推荐一(长篇幅version1.2.0b3):python约会之ORM-sqlalchemy | ...

  9. 使用zabbix监控mysql的三种方式

    使用zabbix监控mysql的三种方式 1.只是安装agent 2.启用模板监控 3.启用自定义脚本的模板监控 zabbix中默认有mysql的监控模板.默认已经在zabbix2.2及以上的版本中. ...

随机推荐

  1. 09SpringAopAdvice

    Spring原生的经典模式 实现 AOP 通知: 前置通知:在目标方法执行之前执行,不能改变方法的执行流程和结果! 实现 MethodBeforeAdvice接口! 后置通知:在目标方法执行之后执行, ...

  2. iOS 面试常问之多线程

    本片围绕多线程全面展开叙述. 1.为什么要有多线程/多线程是用来干什么的? 2.多线程是什么? 3.如何创建多线程? 4.多线程在哪些情况下会使用/多线程使用场景? 5.三种多线程的优缺点? 6.线程 ...

  3. filter配置多个url-pattern和排除个别servlet

    转载自:https://blog.csdn.net/hanghangde/article/details/51298221 侵删 最近做项目遇到一个Filter需要配置多个url-pattern,上网 ...

  4. 关于vue-resource 转变成axios的过程

    在做东钿贷后系统的时候,我选择了vue-resource这个插件作为与服务器沟通工具,但是听说前端同行说vuejs2.0已经不在维护vue-resource了,vuejs2.0 已经使用了axios了 ...

  5. ECShop怎么首页调用文章列表

    举例如首页调用方法:1.先打开index.php文件找到以下代码:$smarty->assign('new_articles', index_get_new_articles()); // 最新 ...

  6. 1、http简介

    HTTP 简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传 ...

  7. linux命令行—《命令行快速入门》

    pwd print working directory 打印工作目录 hostname my computer's network name 电脑在网络中的名称 mkdir make director ...

  8. 织梦channel标签内调用子栏目内容

    文件:include\taglib\channel.lib.php 把代码 SELECT id,typename,typedir,isdefault,ispart,defaultname,nameru ...

  9. layout_weight属性

    layout_weight 某个控件text多行,第一行对齐,baselineAligned = "false" 可使控件对齐 weight 计算规则 剩余尺寸=父布局尺寸-子布局 ...

  10. uvm_reg_backdoor——寄存器模型(十)

    寄存器有前门和后门两种访问方式,这儿只看后门访问方式 //----------------------------------------------------------------------- ...