php常用数据库操作

打印 上一主题 下一主题

主题 507|帖子 507|积分 1521

PHP操作

1. mysqli_connect() 连接数据库

2. mysqli_close() 关闭数据库

  1. <?php
  2. $servername = "localhost";  // MySQL 服务器地址
  3. $username = "root";         // 数据库用户名
  4. $password = "password";     // 数据库密码
  5. $dbname = "mydatabase";     // 数据库名
  6. // 建立与 MySQL 数据库服务器的连接
  7. $conn = mysqli_connect($servername, $username, $password, $dbname);
  8. // 检查连接是否成功
  9. if (!$conn) {
  10.     die("连接失败: " . mysqli_connect_error());
  11. }
  12. echo "连接成功!";
  13. // 在这里可以执行数据库操作
  14. // 关闭与 MySQL 数据库服务器的连接
  15. mysqli_close($conn);
  16. ?>
复制代码
mysqli_num_rows() 是 PHP 中用于获取查询效果中行数的函数,它是 MySQLi(MySQL Improved Extension)扩展库的一部门。MySQLi 是 PHP 提供的一个强盛且面向对象的扩展,用于与 MySQL 数据库进行交互。
mysqli_num_rows 函数的语法如下:
  1. mysqli_num_rows($result);
复制代码
其中:


  • $result 是一个效果对象,它表示从数据库中返回的查询效果集。
3. mysqli_num_rows 查询效果会合的行数

函数返回查询效果会合的行数,即效果会合包含多少条记录。如果查询失败或返回的效果集为空,则该函数返回 0。
  1. // 创建数据库连接$connection = mysqli_connect('localhost', 'username', 'password', 'database');// 检查连接是否乐成if (mysqli_connect_errno()) {    die('连接数据库失败: ' . mysqli_connect_error());}// 实验查询$query = "SELECT * FROM users";$result = mysqli_query($connection, $query);
  2. // 获取查询效果中的行数$num_rows = mysqli_num_rows($result);
  3. echo "查询效果中共有 {$num_rows} 条记录\n";// 关闭数据库连接mysqli_close($connection);
复制代码
4. mysqli_select_db 选择数据库的函数

是 PHP 中用于选择数据库的函数。它用于在连接到 MySQL 数据库后,选择要操作的特定命据库。
  1. 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 函数的语法如下:
  1. mysqli_query($connection, $query);
复制代码
其中:


  • $connection 是一个数据库连接对象,它表示与 MySQL 数据库建立的连接。通常通过 mysqli_connect 或 mysqli_init 函数创建连接对象。
  • $query 是要实验的 SQL 查询语句。
mysqli_query 函数实验指定的 SQL 查询,并返回一个效果对象或布尔值,详细取决于查询的类型和实验效果。
  1. // 创建数据库连接$connection = mysqli_connect('localhost', 'username', 'password', 'database');// 检查连接是否乐成if (mysqli_connect_errno()) {    die('连接数据库失败: ' . mysqli_connect_error());}// 实验查询$query = "SELECT * FROM users";$result = mysqli_query($connection, $query);
  2. // 处理查询效果if ($result) {    // 读取效果会合的数据    while ($row = mysqli_fetch_assoc($result)) {        echo $row['username'] . "\n";    }} else {    echo '查询失败: ' . mysqli_error($connection);}// 关闭数据库连接mysqli_close($connection);
复制代码
6. header( )

  1. echo '<script>window.location.href = "../index.php";</script>';
  2. // 上面的语句可以替代下面的转向
  3. header('Location:  ../index.php');
复制代码
产生缘故原由:由于想在进行数据库的读写之后,从 php 页面转到前端页面,使用 header() 不会实验他前面的 echo 语句,故此
7.防止 sql 注入

  1. <?php
  2. include_once "../variable.php";
  3. $conn = mysqli_connect($mysql_hostname, $mysql_username, $mysql_password, $mysql_database);
  4. if(!$conn){
  5.   echo "数据库".$mysql_database."连接失败";
  6.   exit();
  7. }
  8. else echo "连接数据库".$mysql_database."成功";
  9. if(isset($_POST['text']) && isset($_POST['input'])){
  10.   echo "<script>alert('提交');</script>";
  11.   $cont1 = mysqli_real_escape_string($conn, $_POST['text']);
  12.   $cont2 = mysqli_real_escape_string($conn, $_POST['input']);
  13.   
  14.   $sql = "INSERT INTO essy (column1, column2) VALUES (?, ?)";
  15.   $stmt = mysqli_prepare($conn, $sql);
  16.   mysqli_stmt_bind_param($stmt, "ss", $cont1, $cont2);
  17.   $result = mysqli_stmt_execute($stmt);
  18.   
  19.   if(!$result){
  20.     echo "插入数据时发生错误:" . mysqli_error($conn);
  21.   }
  22.   else{
  23.     echo "插入数据成功";
  24.   }
  25. }
  26. else{
  27.   echo "<script>alert('提交错误');</script>";
  28. }
  29. mysqli_close($conn);
  30. ?>
复制代码

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

mysqli_prepare() :
  1.         该函数用于准备 SQL 查询语句,返回一个 mysqli_stmt 对象。
  2.      mysqli_prepare() 接受两个参数:
  3.         第一个参数是数据库连接对象,
  4.         第二个参数是要执行的 SQL 查询语句(参数使用占位符 "?" 表示)
复制代码
这种格式可以进步实验查询的服从,并进步应用步伐的安全性。
为背面的 mysqli_stmt_bind_param( ) mysqli_stmt_execute() 做预备

mysqli_stmt_bind_param( ) :
  1.         用于绑定参数到准备好的查询语句中。
  2.     它接受三个参数:
  3.         第一个参数是 mysqli_stmt 对象,
  4.         第二个参数是参数类型的字符串,
  5.         第三个参数是要绑定的参数
  6. 第二个参数类型:
  7.     字符串类型:s
  8.     整数类型:i
  9.     双精度浮点类型:d
  10.     布尔类型:b
  11. 第二个参数是根据第三个要绑定的来确定的,对应的是相应数据库中的类型,因此易知,第三个三数可以是多个值,即对应表中的不同列
复制代码
只是绑定,并没有进行插入等操作,绑定之后通过 mysqli_stmt_execute() 来实验 sql 语句中的操作
详细根据 mysqli_prepare() 中的 sql 进行的

mysqli_stmt_execute()
  1.         用于执行准备好的查询语句。
  2.     它接受一个参数,即 mysqli_stmt 对象
  3.         
  4.     返回布尔值
复制代码

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

徐锦洪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表