📜  在php中查询sql(1)

📅  最后修改于: 2023-12-03 14:51:18.618000             🧑  作者: Mango

在 PHP 中查询 SQL

在 PHP 中查询 SQL 是非常常见的操作,它是通过和数据库交互从而获取所需数据的方法。在本文中,我们将介绍如何在 PHP 中使用 SQL 查询。

连接数据库

在查询数据之前,我们需要先连接到数据库。在 PHP 中,我们可以使用 MySQLi 或 PDO 扩展来连接到 MySQL 数据库。下面是一个使用 MySQLi 扩展来连接到数据库的示例代码:

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接
if ($conn->connect_error) {
  die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>
执行 SQL 查询

在连接到数据库之后,我们可以执行 SQL 查询,以获取所需的数据。在 PHP 中,我们可以使用 mysqli_query() 函数执行 SQL 查询。下面是一个从名为 users 的表中获取所有数据的示例:

<?php
$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
  // 循环输出所有数据
  while($row = mysqli_fetch_assoc($result)) {
    echo "id: " . $row["id"]. " - 姓名: " . $row["name"]. " - 年龄: " . $row["age"]. "<br>";
  }
} else {
  echo "没有数据";
}

mysqli_close($conn);
?>
防止 SQL 注入

在执行 SQL 查询时,我们需要注意 SQL 注入问题。SQL 注入是一种攻击技术,它可用于绕过应用程序的身份验证,并从数据库中窃取或修改数据。为了防止 SQL 注入,我们应该使用参数化查询或准备好的语句。

参数化查询

参数化查询是一种使用占位符代替 SQL 语句中实际值的技术。在 PHP 中,我们可以使用 PDO 或 MySQLi 扩展来实现参数化查询。下面是一个使用 PDO 扩展和参数化查询的示例代码:

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

try {
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $stmt = $conn->prepare("SELECT * FROM users WHERE age=:age");
  $stmt->bindParam(':age', $age);

  $age = 25;
  $stmt->execute();

  // 输出数据
  while($row = $stmt->fetch()) {
    echo "id: " . $row["id"]. " - 姓名: " . $row["name"]. " - 年龄: " . $row["age"]. "<br>";
  }
}
catch(PDOException $e) {
  echo "错误: " . $e->getMessage();
}

$conn = null;
?>
准备好的语句

准备好的语句是一种使用问号代替 SQL 语句中实际值的技术。在 PHP 中,我们可以使用 MySQLi 扩展来实现准备好的语句。下面是一个使用 MySQLi 扩展和准备好的语句的示例代码:

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
  die("连接失败: " . $conn->connect_error);
}

$stmt = $conn->prepare("SELECT * FROM users WHERE age=?");
$stmt->bind_param("i", $age);

$age = 25;
$stmt->execute();

$result = $stmt->get_result();

// 输出数据
if ($result->num_rows > 0) {
  while ($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - 姓名: " . $row["name"]. " - 年龄: " . $row["age"]. "<br>";
  }
} else {
  echo "没有数据";
}

$stmt->close();
$conn->close();
?>
结论

在 PHP 中查询 SQL 是一项基本操作,本文中我们介绍了如何连接到数据库,执行 SQL 查询以及如何防止 SQL 注入。对于经常需要与数据库进行交互的 PHP 程序员来说,这些技术是非常重要的。