连接MySQL

<?php
$servername = "localhost";
$username = "username";
$password = "password";
 
try {
    $conn = new PDO("mysql:host=$servername;", $username, $password);
    echo "连接成功"; 
}
catch(PDOException $e)
{
    echo $e->getMessage();
}
?>

<?php
/*数据库配置*/
$dbconfig = array(
  'host' => 'localhost', //数据库服务器
  'port' => 3306, //数据库端口
  'user' => 'username', //数据库用户名
  'pwd' => 'password', //数据库密码
  'dbname' => 'dbname' //数据库名
);

// 检测链接
try {
  // 创建链接
  $conn = new PDO("mysql:host=" . $dbconfig['host'] . ";dbname=" . $dbconfig['dbname'] . ";port=" . $dbconfig['port'], $dbconfig['user'], $dbconfig['pwd']);
  // 设置 PDO 错误模式,用于抛出异常
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "连接成功"; 
} catch (PDOException $e) {
  echo $e->getMessage();
}

// 关闭数据库链接
// $conn = null;

查询数据

<?php
// 链接数据库
require_once('conn.php');
try {
  // 数据库语句
  $sql = "select * from nav";
  // 有返回结果集,使用query函数,该函数返回结果为预处理对象。
  $stmt = $conn->query($sql);
  // 默认输出
  var_dump($stmt);
  } catch (PDOException $e) {
  echo $e->getMessage();
}

PDO+预处理

<?php
// 链接数据库
require_once('conn.php');
try {
  // 数据库语句
  $sql = "select * from nav";
  // prepare+execute用于预处理,使sql语句灵活了很多,也可用防止SQL注入等问题。
  $stmt = $conn->prepare($sql);
  $stmt->execute();
  // 默认输出
  var_dump($stmt);
  } catch (PDOException $e) {
  echo $e->getMessage();
}

以上俩种均可读取数据库数据,但是query()用于简单查询,而prepare()强大安全。

参数说明
PDO::FETCH_ASSOC从结果集中获取以列名为索引的关联数组。
PDO::FETCH_NUM从结果集中获取一个以列在行中的数值偏移量为索引的值数组。
PDO::FETCH_BOTH默认值,包含以上两种数组。
PDO::FETCH_OBJ从结果集当前行的记录中获取其属性对应各个列名的一个对象。
PDO::FETCH_BOUND使用fetch()返回TRUE,并将获取的列值赋给在bindParm()方法中指 定的相应变量。
PDO::FETCH_LAZY创建关联数组和索引数组,以及包含列属性的一个对象,从而可以在这三种接口中任选一种。

fetch()方法

fetch()方法可以将结果集中当前的记录以某种方式返回,并将结果集指针移至下一行,当到达结果集末尾时返回FALSE。

<?php
// 链接数据库
require_once('conn.php');
try {
  // 数据库语句
  $sql = "select * from nav";
  // 有返回结果集,使用query函数,该函数返回结果为预处理对象。
  $stmt = $conn->query($sql);
  // 使用fetch()方法,获取关联数组
  $res = $stmt->fetch(PDO::FETCH_ASSOC);
  // 输出一个关联数组
  var_dump($res);
  echo '</br></br>';
  // 只输出单个值
  echo 'id为:' . $res['id'];
  echo '</br></br>';
  // 循环输出查询到的所有结果并换行
  foreach ($res as $v) {
    echo $v . '</br>';
  }
  } catch (PDOException $e) {
  echo $e->getMessage();
}

输出结果

fetchAll()方法

fetchAll()方法与fetch()类似,但是该方法只需要调用一次就可以获取结果集中的所有行,并赋给返回的数组(二维)。

<?php
// 链接数据库
require_once('conn.php');
try {
  // 数据库语句
  $sql = "select * from nav";
  // 有返回结果集,使用query函数,该函数返回结果为预处理对象。
  $stmt = $conn->query($sql);
  // 使用fetchall()方法,获取关联数组
  $res = $stmt->fetchAll(PDO::FETCH_ASSOC);
  // 输出一个二维数组
  var_dump($res);
  echo '</br></br>';
  // 循环输出查询到的所有结果
  foreach ($res as $v) {
    echo $v['id'] . '</br>';
    echo $v['navname'] . '</br>';
    echo $v['navlink'] . '</br>';
    echo '</br>';
  }
} catch (PDOException $e) {
  echo $e->getMessage();
}

输出结果

setFetchMode()方法

fetch()fetchAll()两个方法,数字索引和关联索引都有,属于浪费资源,而setFetchMode()可以设置结果集的。

<?php
// 链接数据库
require_once('conn.php');
try {
  // 数据库语句
  $sql = "select * from nav";
  // 有返回结果集,使用query函数,该函数返回结果为预处理对象。
  $stmt = $conn->query($sql);
  // 设置结果集为关联数组
  $stmt->setFetchMode(PDO::FETCH_ASSOC);
  //fetchAll()方法
  $res = $stmt->fetchAll();
  // 输出一个二维数组
  var_dump($res);
  echo '</br></br>';
  // 循环输出查询到的所有结果
  foreach ($res as $v) {
    echo $v['id'] . '</br>';
    echo $v['navname'] . '</br>';
    echo $v['navlink'] . '</br>';
    echo '</br>';
  }
} catch (PDOException $e) {
  echo $e->getMessage();
}

fetchColumn()

<?php
// 链接数据库
require_once('conn.php');
try {
  // 数据库语句
  $sql = "select * from nav";
  // 有返回结果集,使用query函数,该函数返回结果为预处理对象。
  $stmt = $conn->query($sql);
  // 默认获取默认获取当前行的第1列
  echo $stmt->fetchColumn();
  echo '  </br>';
  // 获取当前行第一列
  echo $stmt->fetchColumn(1);
} catch (PDOException $e) {
  echo $e->getMessage();
}

rowCount()和columCount()

<?php
// 链接数据库
require_once('conn.php');
try {
  // 数据库语句
  $sql = "select * from nav";
  // 有返回结果集,使用query函数,该函数返回结果为预处理对象。
  $stmt = $conn->query($sql);
  // 获取总行数、总列数
  echo '总行数:' . $stmt->rowCount() . '</br>';
  echo '总列数:' . $stmt->columnCount() . '</br>';
} catch (PDOException $e) {
  echo $e->getMessage();
}

更改数据

<?php
// 链接数据库
require_once('conn.php');
// 获取要修改的id
$id = $_GET['id'];
// GET接收要修改的数据
$navname = $_GET['name'];
$navlink = $_GET['link'];
try {
  // 插入数据
  $sql = "update nav set navname='$navname', navlink='$navlink' where id=$id ";
  $conn->exec($sql);
  echo '修改成功';
} catch (PDOException $e) {
  echo $e->getMessage();
}

增加数据

<?php
// 链接数据库
require_once('conn.php');
// GET获取插入的数据
$navname = $_GET['name'];
$navlink = $_GET['link'];
try {
  // 插入数据
  $sql = "insert into nav(navname, navlink) values ('$navname','$navlink')";
  $conn->exec($sql);
  echo '插入成功';
} catch (PDOException $e) {
  echo $e->getMessage();
}

删除数据

<?php
// 链接数据库
require_once('conn.php');
// GET获取要删除的id
$id = $_GET['id'];
try {
  // 插入数据
  $sql = "delete from nav where id=$id";
  $conn->exec($sql);
  echo '删除成功';
} catch (PDOException $e) {
  echo $e->getMessage();
}
End
最后修改:2023 年 04 月 14 日
如果觉得我的文章不错,请随手点赞~