php常用数据库操作

PHP操作

1. mysqli_connect() 连接数据库

2. mysqli_close() 关闭数据库

<?php
$servername = "localhost";  // MySQL 服务器地址
$username = "root";         // 数据库用户名
$password = "password";     // 数据库密码
$dbname = "mydatabase";     // 数据库名

// 建立与 MySQL 数据库服务器的连接
$conn = mysqli_connect($servername, $username, $password, $dbname);

// 检查连接是否成功
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}

echo "连接成功!";

// 在这里可以执行数据库操作

// 关闭与 MySQL 数据库服务器的连接
mysqli_close($conn);
?>

mysqli_num_rows() 是 PHP 中用于获取查询结果中行数的函数,它是 MySQLi(MySQL Improved Extension)扩展库的一部分。MySQLi 是 PHP 提供的一个强大且面向对象的扩展,用于与 MySQL 数据库进行交互。

mysqli_num_rows 函数的语法如下:

mysqli_num_rows($result);

其中:

  • $result 是一个结果对象,它表示从数据库中返回的查询结果集。

3. mysqli_num_rows 查询结果集中的行数

函数返回查询结果集中的行数,即结果集中包含多少条记录。如果查询失败或返回的结果集为空,则该函数返回 0。

// 创建数据库连接
$connection = mysqli_connect('localhost', 'username', 'password', 'database');

// 检查连接是否成功
if (mysqli_connect_errno()) {
    die('连接数据库失败: ' . mysqli_connect_error());
}

// 执行查询
$query = "SELECT * FROM users";
$result = mysqli_query($connection, $query);

// 获取查询结果中的行数
$num_rows = mysqli_num_rows($result);

echo "查询结果中共有 {$num_rows} 条记录\n";

// 关闭数据库连接
mysqli_close($connection);

4. mysqli_select_db 选择数据库的函数

是 PHP 中用于选择数据库的函数。它用于在连接到 MySQL 数据库后,选择要操作的特定数据库。

bool mysqli_select_db ( mysqli $link , string $dbname )

参数说明:

  • $link:必需,一个有效的 MySQL 连接对象。
  • $dbname:必需,要选择的数据库名称。

返回值:

  • 如果选择数据库成功,则返回 true。
  • 如果选择数据库失败,则返回 false。

5. mysqli_query 常规的插入查找等

是 PHP 中用于执行 SQL 查询的函数,它是 MySQLi(MySQL Improved Extension)扩展库的一部分。MySQLi 是 PHP 提供的一个强大且面向对象的扩展,用于与 MySQL 数据库进行交互。

mysqli_query 函数的语法如下:

mysqli_query($connection, $query);

其中:

  • $connection 是一个数据库连接对象,它表示与 MySQL 数据库建立的连接。通常通过 mysqli_connectmysqli_init 函数创建连接对象。
  • $query 是要执行的 SQL 查询语句。

mysqli_query 函数执行指定的 SQL 查询,并返回一个结果对象或布尔值,具体取决于查询的类型和执行结果。

// 创建数据库连接
$connection = mysqli_connect('localhost', 'username', 'password', 'database');

// 检查连接是否成功
if (mysqli_connect_errno()) {
    die('连接数据库失败: ' . mysqli_connect_error());
}

// 执行查询
$query = "SELECT * FROM users";
$result = mysqli_query($connection, $query);

// 处理查询结果
if ($result) {
    // 读取结果集中的数据
    while ($row = mysqli_fetch_assoc($result)) {
        echo $row['username'] . "\n";
    }
} else {
    echo '查询失败: ' . mysqli_error($connection);
}

// 关闭数据库连接
mysqli_close($connection);

6. header( )

echo '<script>window.location.href = "../index.php";</script>';
// 上面的语句可以替代下面的转向
header('Location:  ../index.php');

产生原因:由于想在进行数据库的读写之后,从 php 页面转到前端页面,使用 header() 不会执行他前面的 echo 语句,故此

7.防止 sql 注入

<?php
include_once "../variable.php";

$conn = mysqli_connect($mysql_hostname, $mysql_username, $mysql_password, $mysql_database);
if(!$conn){
  echo "数据库".$mysql_database."连接失败";
  exit();
}
else echo "连接数据库".$mysql_database."成功";

if(isset($_POST['text']) && isset($_POST['input'])){
  echo "<script>alert('提交');</script>";
  $cont1 = mysqli_real_escape_string($conn, $_POST['text']);
  $cont2 = mysqli_real_escape_string($conn, $_POST['input']);
  
  $sql = "INSERT INTO essy (column1, column2) VALUES (?, ?)";
  $stmt = mysqli_prepare($conn, $sql);
  mysqli_stmt_bind_param($stmt, "ss", $cont1, $cont2);
  $result = mysqli_stmt_execute($stmt);
  
  if(!$result){
    echo "插入数据时发生错误:" . mysqli_error($conn);
  }
  else{
    echo "插入数据成功";
  }
}
else{
  echo "<script>alert('提交错误');</script>";
}

mysqli_close($conn);
?>


mysqli_real_escape_string():

	函数的作用就是将字符串中的特殊字符进行转义,使其成为合法的 SQL 字符串。转义后的字符串可以安全地插入到 SQL 查询语句中,而不会引发 SQL 注入问题。
	该函数接受两个参数:第一个是数据库连接对象,第二个是要转义的字符串。函数会返回转义后的字符串。

mysqli_prepare() :

	该函数用于准备 SQL 查询语句,返回一个 mysqli_stmt 对象。
     mysqli_prepare() 接受两个参数:
        第一个参数是数据库连接对象,
        第二个参数是要执行的 SQL 查询语句(参数使用占位符 "?" 表示)

这种格式可以提高执行查询的效率,并提高应用程序的安全性。

为后面的 mysqli_stmt_bind_param( ) mysqli_stmt_execute() 做准备


mysqli_stmt_bind_param( ) :

	用于绑定参数到准备好的查询语句中。
    它接受三个参数:
        第一个参数是 mysqli_stmt 对象,
        第二个参数是参数类型的字符串,
        第三个参数是要绑定的参数
 
第二个参数类型:
    字符串类型:s
    整数类型:i
    双精度浮点类型:d
    布尔类型:b
第二个参数是根据第三个要绑定的来确定的,对应的是相应数据库中的类型,因此易知,第三个三数可以是多个值,即对应表中的不同列

只是绑定,并没有进行插入等操作,绑定之后通过 mysqli_stmt_execute() 来执行 sql 语句中的操作

具体根据 mysqli_prepare() 中的 sql 进行的


mysqli_stmt_execute()

	用于执行准备好的查询语句。
    它接受一个参数,即 mysqli_stmt 对象
        
    返回布尔值

以上四者搭配使用,一定程度上减小了一点点 sql 注入

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值