PHP 面试题 目录

PHP 中如何执行 SQL 查询?

推荐答案

在 PHP 中执行 SQL 查询通常使用 PDOmysqli 扩展。以下是使用 PDOmysqli 执行 SQL 查询的示例代码:

使用 PDO 执行 SQL 查询

-- -------------------- ---- -------
-----
-- -------
---- - -------------------------------------
--------- - -------
--------- - ---

--- -
    -- -- --- --
    ---- - --- --------- ---------- -----------
    
    -- -- --- -------
    ------------------------------------- ------------------------
    
    -- --- --
    ---- - ------- - ---- ----- ----- -- - -----
    
    -- -- --- --
    ----- - --------------------
    
    -- ----
    ----------------------- ---- ----------------
    
    -- ----
    -----------------
    
    -- ----
    ------- - ----------------------------------
    
    -- ----
    -----------------
- ----- ------------- --- -
    ---- ------- - - -----------------
-
--

使用 mysqli 执行 SQL 查询

-- -------------------- ---- -------
-----
-- -------
----- - ------------
----- - -------
----- - ---
------- - ---------

-- -- ------ --
------- - --- ------------- ------ ------ ---------

-- --------
-- ------------------------ -
    --------------- ------- - - ------------------------
-

-- --- --
---- - ------- - ---- ----- ----- -- - ---

-- -- --- --
----- - -----------------------

-- ----
---------------------- -----

-- ----
-----------------

-- ----
------- - --------------------

-- ----
----- ----- - ----------------------- -
    --------------
-

-- ----
---------------
-----------------
--

本题详细解读

PDO 与 mysqli 的区别

  1. PDO:

    • 支持多种数据库(如 MySQL、PostgreSQL、SQLite 等)。
    • 提供统一的 API,便于切换数据库。
    • 支持预处理语句,防止 SQL 注入。
    • 支持命名参数绑定。
  2. mysqli:

    • 仅支持 MySQL 数据库。
    • 提供面向对象和面向过程两种编程风格。
    • 支持预处理语句,防止 SQL 注入。
    • 支持多查询执行。

预处理语句的重要性

无论是使用 PDO 还是 mysqli,预处理语句都是防止 SQL 注入攻击的重要手段。通过将 SQL 语句与参数分离,预处理语句可以确保用户输入不会被解释为 SQL 代码的一部分。

参数绑定

PDO 中,可以使用 bindParambindValue 方法绑定参数。在 mysqli 中,使用 bind_param 方法绑定参数。参数绑定可以确保输入数据被正确处理,避免 SQL 注入。

错误处理

PDO 中,可以通过设置 PDO::ATTR_ERRMODE 属性为 PDO::ERRMODE_EXCEPTION 来捕获异常。在 mysqli 中,可以通过检查 connect_errorerror 属性来处理错误。

结果获取

PDO 中,可以使用 fetchfetchAll 方法获取查询结果。在 mysqli 中,可以使用 get_result 方法获取结果集,然后通过 fetch_assoc 方法逐行获取数据。

性能考虑

  • PDO 由于其跨数据库的特性,可能在性能上略低于 mysqli
  • mysqli 由于其专为 MySQL 设计,可能在处理 MySQL 数据库时性能更优。

选择建议

  • 如果需要跨数据库支持,推荐使用 PDO
  • 如果仅使用 MySQL 数据库,且需要更高的性能,推荐使用 mysqli
纠错
反馈