欢迎访问宙启技术站
智能推送

10个PHP数据库函数:优化SQL查询

发布时间:2023-06-22 21:51:50

PHP是世界上最流行的服务器端脚本语言之一,用于动态Web内容开发。PHP中的大多数在线应用程序都需要与数据库进行交互。在PHP中,有很多数据库函数可以与不同类型的数据库(如MySQL、Oracle、PostgreSQL等)进行交互。在本文中,我们将探讨10个PHP数据库函数,以优化SQL查询。

1. mysqli_connect

适用于MySQL,打开与MySQL服务器的新连接。此函数需要连接的主机名、用户名、密码和数据库名称。

示例代码:

$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "example";

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

// 检测连接
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";

2. mysqli_query

适用于MySQL,执行SQL查询并返回结果对象。

示例代码:

$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"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
  }
} else {
  echo "0 results";
}

mysqli_close($conn);

3. mysqli_num_rows

适用于MySQL,返回结果集合中的行数。

示例代码:

$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);
echo "Number of rows: " . mysqli_num_rows($result);

4. mysqli_fetch_array

适用于MySQL,从结果对象中获取一行作为关联数组和数字索引数组。

示例代码:

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

while($row = mysqli_fetch_array($result)) {
  echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
}

5. mysqli_fetch_assoc

适用于MySQL,从结果对象中获取一行作为关联数组。

示例代码:

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

while($row = mysqli_fetch_assoc($result)) {
  echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
}

6. mysqli_fetch_row

适用于MySQL,从结果对象中获取一行作为数字索引数组。

示例代码:

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

while($row = mysqli_fetch_row($result)) {
  echo "ID: " . $row[0]. " - Name: " . $row[1]. " - Email: " . $row[2]. "<br>";
}

7. mysqli_real_escape_string

适用于MySQL,将字符串转义为安全的SQL语句。

示例代码:

$name = mysqli_real_escape_string($conn, $name);
$email = mysqli_real_escape_string($conn, $email);

$sql = "SELECT * FROM users WHERE name='$name' AND email='$email'";
$result = mysqli_query($conn, $sql);

8. mysqli_fetch_object

适用于MySQL,从结果对象中获取一行作为对象。

示例代码:

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

while($obj = mysqli_fetch_object($result)) {
  echo "ID: " . $obj->id. " - Name: " . $obj->name. " - Email: " . $obj->email. "<br>";
}

9. mysqli_affected_rows

适用于MySQL,返回前一个操作所影响的行数。

示例代码:

$sql = "DELETE FROM users WHERE id=1";
mysqli_query($conn, $sql);

echo "Rows deleted: " . mysqli_affected_rows($conn);

10. mysqli_prepare

适用于MySQL,准备SQL语句,以便绑定变量到查询中。

示例代码:

$name = "John";
$email = "john@example.com";

$stmt = mysqli_prepare($conn, "SELECT * FROM users WHERE name=? AND email=?");
mysqli_stmt_bind_param($stmt, "ss", $name, $email);

mysqli_stmt_execute($stmt);