php操作mysql数据库(增删改查)_docker搭建php开发环境

php操作mysql数据库(增删改查)_docker搭建php开发环境【Mysqli面向对象方式操作数据库】 添加、修改、删除数据 $mysqli = new mysqli('localhost','root','123456&#

PHP操作mysql(mysqli + PDO)

【Mysqli面向对象方式操作数据库】

添加、修改、删除数据

$mysqli = new mysqli("localhost","root","123456","test");
$mysqli->query("set names utf8");
//添加数据
$result = $mysqli->query("INSERT INTO users(name,money) VALUE ("张三",10)");
$result = $mysqli->query("INSERT INTO users(name,money) VALUE ("李四",200)");

//修改数据
$result = $mysqli->query("UPDATE users SET money=money+10 WHERE id = 3");

//删除数据
$result = $mysqli->query("DELETE FROM users WHERE id=3");

var_dump($result);

代码100分

查询数据

代码100分header("content-type:text/html;charset=utf-8");
$mysqli = new mysqli("localhost","root","123456","test");
$mysqli->query("set names utf8");

$result = $mysqli->query("SELECT * FROM users");
$data = $result->fetch_all(MYSQLI_ASSOC);
var_dump($data);

事务控制

header("content-type:text/html;charset=utf-8");
$mysqli = new mysqli("localhost","root","123456","test");
$mysqli->query("set names utf8");
$mysqli->autocommit(false); //开启事务
$sql1 = "UPDATE users SET money=money-10 where id=1";
$sql2 = "UPDATE users SET money=money+10 where id=20";
$mysqli->query($sql1);
$r1 = $mysqli->affected_rows;
$mysqli->query($sql2);
$r2 = $mysqli->affected_rows;
if($r1>0 && $r2>0){
    $mysqli->commit(); //事务提交
    echo "操作成功";
}else{
    $mysqli->rollback(); //事务回滚
    echo "操作失败";
}

预处理-增删改操作

代码100分header("content-type:text/html;charset=utf-8");
$mysqli = new mysqli("localhost","root","123456","test");
$mysqli->query("set names utf8");
$sql = "INSERT INTO users(name,money) VALUE(?,?)";
$stmt = $mysqli->prepare($sql);

$name = "王小小";
$money = 500;
$stmt->bind_param("si",$name,$money);
$result = $stmt->execute();
var_dump($result);

$name = "王大大";
$money = 600;
$stmt->bind_param("si",$name,$money);
$result = $stmt->execute();
var_dump($result);

预处理-查询操作

header("content-type:text/html;charset=utf-8");
$mysqli = new mysqli("localhost","root","","test");
$mysqli->query("set names utf8");
$sql = "SELECT * FROM users WHERE id>?";
$stmt = $mysqli->prepare($sql);
$id=1;
$stmt->bind_param("i",$id);
$stmt->bind_result($id,$name,$money);
$stmt->execute();

while($stmt->fetch()){
    $data[] = [
        "id"=>$id,
        "name"=>$name,
        "money"=>$money
    ];
}
var_dump($data);

【PDO方式操作数据库】

PDO查询数据

header("content-type:text/html;charset=utf-8");
$dsn = "mysql:host=localhost;dbname=test";
$pdo = new PDO($dsn,"root","123456");
$pdo->exec("set names utf8");
$sql = "SELECT * FROM users";
$stmt = $pdo->query($sql);
//$data = $stmt->fetch(PDO::FETCH_ASSOC);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($data);

PDO增删改数据

header("content-type:text/html;charset=utf-8");
$dsn = "mysql:host=localhost;dbname=test";
$pdo = new PDO($dsn,"root","123456");
$pdo->exec("set names utf8");
$sql = "UPDATE users SET money=500 WHERE id=1";
$result = $pdo->exec($sql);
var_dump($result);

PDO事务控制

header("content-type:text/html;charset=utf-8");
$dsn = "mysql:host=localhost;dbname=test";
$pdo = new PDO($dsn,"root","123456");
$pdo->exec("set names utf8");
$pdo->beginTransaction(); //开启事务
$sql1 = "UPDATE users SET money=money-100 WHERE id=1";
$r1 = $pdo->exec($sql1);

$sql2 = "UPDATE1 users SET money=money+100 WHERE id=2";
$r2 = $pdo->exec($sql2);

if($r1>0 && $r2>0){
    $pdo->commit(); //事务提交
    echo "操作成功";
}else{
    $pdo->rollBack(); //事务回滚
    echo "操作失败";
}
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
//var_dump($result);

PDO预处理

header("content-type:text/html;charset=utf-8");
$dsn = "mysql:host=localhost;dbname=test";
$pdo = new PDO($dsn,"root","123456");
$pdo->exec("set names utf8");

//$sql = "SELECT * FROM users WHERE id>:id";
$sql = "UPDATE users SET money=1000 WHERE id=:id";
$stmt = $pdo->prepare($sql);

$id = 4;
$stmt->bindParam(":id",$id);

//$stmt->bindValue(1,2);

$result = $stmt->execute();
var_dump($result);

//$data  = $stmt->fetchAll(PDO::FETCH_ASSOC);
//var_dump($data);

常见的SQL注入方式及防范措施

header("content-type:text/html;charset=utf-8");
$dsn = "mysql:host=localhost;dbname=test";
$pdo = new PDO($dsn,"root","123456");
$pdo->exec("set names utf8");
$id = isset($_GET["id"])?$_GET["id"]:1;
$sql = "SELECT * FROM users WHERE id=".$id;
$stmt = $pdo->query($sql);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($data);

//SELECT * FROM users WHERE id=1
//SELECT * FROM users WHERE id=1 or 1=1    SELECT * FROM users
//SELECT * FROM users WHERE id=1;drop table test;--

header("content-type:text/html;charset=utf-8");
$dsn = "mysql:host=localhost;dbname=test";
$pdo = new PDO($dsn,"root","123456");
$pdo->exec("set names utf8");

$sql = "SELECT * FROM users WHERE id=:id";
$stmt = $pdo->prepare($sql);
$id = isset($_GET["id"])?$_GET["id"]:1;
$stmt->bindParam(":id",$id);

$result = $stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($data);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10230.html

(0)
上一篇 2023-01-23
下一篇 2023-01-23

相关推荐

  • [MySQL] mysql中bitmap的简单运用

    [MySQL] mysql中bitmap的简单运用bitmap就是在一个二进制的数据中,每一个位代表一定的含义,这样最终只需要存一个整型数据,就可以解释出多个含义.业务中有一个字段专门用来存储用户对某些功能的开启和关闭,如果是传统的思维,肯定是建一个

    2022-12-22
    170
  • mysql存储过程、触发器实验总结_触发器可以调用存储过程吗

    mysql存储过程、触发器实验总结_触发器可以调用存储过程吗1.视图:view 视图就是一张虚拟的表。表是真正存数据的,视图只是显示查询结果。 视图的作用:隐藏表的结构、简化sql嵌套查询操作 注意:视图就是你要查询数据的一个中间结果集,我们一般只用来做数据查

    2023-06-04
    153
  • Postgresql 触发器实例及相关知识了解

    Postgresql 触发器实例及相关知识了解执行顺序 1)触发器按按执行的时间被分为before触发器和after触发器。语句级的before触发器在语句开始执行前被调用,语句级的after触发器在语句开始执行结束后被调用。 2)数据行级的b…

    2023-04-03
    160
  • Python模块安装简易教程

    Python模块安装简易教程Python作为一种快速、简便的编程语言,备受程序员欢迎。Python提供了很多第三方模块,丰富了它的功能和应用范围。然而,使用这些模块并不是一件容易的事情。Python模块的安装与编写是Python开发者必不可少的技能。因此,本文将从多个方面,介绍Pytho模块安装的方法和技巧。

    2024-07-21
    38
  • RAC修改字符集「建议收藏」

    RAC修改字符集「建议收藏」字符集修改做过几次了,这次感觉还是有点不顺,走了弯路,再记一遍【概况】准备搭建RAC+RAC DG,发现两端字符集不大一致,担心到时出问题。 【目标】将备库NLS_NCHAR_CHARACTERSET

    2022-12-26
    136
  • 大数据hadoop入门教程_大数据 hadoop

    大数据hadoop入门教程_大数据 hadoop1 hadoop-最全最完整的保姆级的java大数据学习资料 大数据技术解决的是什么问题? 大数据技术解决的主要是海量数据的存储和计算。 Hadoop的广义和狭义之分 狭义的Hadoop:指的是一个框

    2023-06-18
    157
  • 第二讲-数据库的抽象[通俗易懂]

    第二讲-数据库的抽象[通俗易懂]本讲主要针对数据库概念的提出与发展进行讲解。 上次回顾:什么是数据库、数据库系统?数据库管理系统扮演的角色是什么? 重点难点: 1、如何抽象一个数据库系统:三级模式两层映像、两个独立性 2、数据模型、

    2023-04-14
    141
  • MySQL数据库安装_MySQL安装教程

    MySQL数据库安装_MySQL安装教程作者:余振兴 一、工具介绍 dbdeployer 是一款十分强大的数据库测试环境部署工具,可实现一键部署不同架构、不同版本的数据库环境。 如:MySQL 主从复制、GTID 模式复制、MySQL 组…

    2022-12-23
    136

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注