Php MySql

1 连接 Mysql
$conn = new mysqli($servername,$username,$password);
$conn = mysqli_connect($servername,$username,$password);

关闭连接

$conn->close();
mysqli_close($conn);

测试 PHP 的 MySql 数据库的连接

使用函数 parse_ini_file() 解析配置文件 config.ini 来获得数据库连接参数,然后使用 new 关键字对 mysqli 类进行实例化,最后使用函数 mysqli_connect_errno() 来判断是否成功连接上了 MySQL 数据库,实现该过程的代码如下所示

try{
  // 解析 config.ini文件
  $config = parse_ini_file(realpath(dirname(_FILE_).'/config/config.ini'));
  // 对 mysqli类进行实例化
  $mysqli = new mysqli($config['host'],$config['username'],$config['password'],$config['dbname']);
  if(mysql_connect_errno()){ // 判断是否成功连接上 MySQL 数据库
     throw new Exception('数据库连接错误!');
  }else{
     echo '数据库连接成功 !'; // 打印连接成功的提示
  }
}catch(Exception $e){
   echo $e-> getMessage();
}
2 创建数据库

CREATE DATABASE 创建数据库
创建一个名为 myDB 的数据库

$sql = "CREATE DATABASE myDB";

注意:当创建一个新的数据库时,必须为 mysqli 对象,指定三个参数 (servername, username,password)
如果使用其他端口(默认 3306),为数据库参数添加空字符串,如
mysqli("localhost","username","password","",port)

补充下 数据库连接 编码问题

// php7
mysqli_query($conn,"set character set 'utf-8'"); // 读库
mysqli_query($conn,"set names 'utf8'"); // 写库

// php5
mysql_query("set character set 'utf8'"); // 读库
mysql_query("set names 'utf8'"); // 写库
3 创建 MySQL 表

一个数据表 有一个唯一名称,并有 行和列 组成

CREATE TABLE 语句,用于创建 MySQL 表
创建表前,我们需要使用 use_myDB 来选择要操作的数据库

use myDB

我们将创建一个名为 “MyGuests” 的表,有 5 个列: “id”, “firstname”, “lastname”, “email” 和 “reg_date”:

CREATE TABLE MyGuests(
   id INT(6) UNSIGNED AUTO_INCREAMENT PRIMARY KEY,
   firstname VARCHAR(30) NOT NULL,
   lastname VARCHAR(30) NOT NULL,
   email VARCHAR(50),
   reg_date TIMESTAMP
)

注意事项:
数据类型可以指定 列 可以存储什么类型的数据,在设置了数据类型后,可以为每个列指定其他选项的属性

  • NOT NULL — 每一行都必须含有值(不能为空),null 值是不允许的
  • DEFAULT value — 设置默认值
  • UNSIGNED — 使用无符号数值类型,0,正数
  • AUTO INCREMENT — 设置 MySQL 字段的值在新增记录时 每次自动增长1
  • PRIMARY KEY — 设置数据表中每条记录的唯一标识。 通常列的 PRIMARY KEY 设置为 ID数值,与 AUTO_INCREMENT 一起使用

每个表都应该有一个主键(本列为 ‘id’ 列),主键必须包含唯一的值

4 MySQL 插入数据

语法规则:

  • PHP 中 SQL 查询语句 必须使用引号
  • 在 SQL 查询语句中的 字符串值 必须加 引号
  • 数值的值 不需要引号
  • NULL 值 不需要引号

INSERT INTO 语句通常用于向 MySQL 表添加新的记录

INSERT INTO table_name(column1,column2,column3,...)
VALUES(value1,value2,value3,...)

向 MyGuests 表中 添加数据

$sql = "INSERT INTO MyGuests(firstname,lastname,email)
VALUES('John','Doe','john@example.com')"
5 插入多条数据

mysqli_multi_query() 函数可以执行多条 SQL 语句

一般使用

$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')";

注意:每个 SQL语句 必须用 分号 隔开

使用 预处理语句
预处理语句及绑定参数,mysql 扩展可以不带数据发送语句或查询到mysql数据库。 可以向列关联或 “绑定” 变量

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
 
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} else {
    $sql = "INSERT INTO MyGuests(firstname, lastname, email)  VALUES(?, ?, ?)";
 
    // 为 mysqli_stmt_prepare() 初始化 statement 对象
    $stmt = mysqli_stmt_init($conn);
 
    //预处理语句
    if (mysqli_stmt_prepare($stmt, $sql)) {
        // 绑定参数
        mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
 
        // 设置参数并执行
        $firstname = 'John';
        $lastname = 'Doe';
        $email = 'john@example.com';
        mysqli_stmt_execute($stmt);
 
        $firstname = 'Mary';
        $lastname = 'Moe';
        $email = 'mary@example.com';
        mysqli_stmt_execute($stmt);
 
        $firstname = 'Julie';
        $lastname = 'Dooley';
        $email = 'julie@example.com';
        mysqli_stmt_execute($stmt);
    }
}
?>

使用模块化来处理问题,可以通过创建代码块实现更简单的读取和管理
注意参数的绑定,看下 mysqli_stmt_bind_param() 中的代码

mysqli_stmt_bind_params($stmt,'sss',$firstname,$lastname,$email);

该函数绑定参数查询,并将参数传递给数据库。第二个参数是 “sss”。下面的列表展示的参数的类型,s字符告诉 mysql 参数是 字符串

可以是以下 四种参数

  • i - 整数
  • d - 双精度浮点数
  • s - 字符串
  • b - 布尔值
6 预处理语句

预处理语句,用于执行多个相同的 SQL语句,并且执行效率更高

预处理:

INSERT INTO MyGuests(firstname,lastname,email) VALUE(?,?,?)

预处理及绑定

$stmt = $conn->prepare("INSERT INTO MyGuests(firstname,lastname,email) VALUES(?,?,?)");
$stmt->bind_param("sss",$firstname,$lastnme,$email);

解析:
? 可以将其替换为 整形,字符串,双精度浮点型和布尔值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值