【问题标题】:mysql_ deprecated [duplicate]mysql_ 已弃用 [重复]
【发布时间】:2013-02-23 23:45:55
【问题描述】:

有人告诉我,mysql_ 扩展现在在当前版本的 PHP 中已被弃用,并将在某个时候被删除。

我应该用什么来代替这个以及如何使用?

我几乎所有的查询都使用它。

例如:

$result = mysql_query($query);

if (!$result) die ("Database access failed: " . mysql_error());

$rows = mysql_num_rows($result);

【问题讨论】:

  • 使用 mysqli_* 函数
  • 你应该使用PDO
  • 不仅仅是mysql_num_rows()。它是所有 mysql_*() 函数,mysql_connect(), mysql_query(), etc...
  • 不仅*_num_rows被弃用,整个mysql_扩展也被弃用。阅读:php.net/manual/en/mysqlinfo.api.choosing.php
  • 我也很高兴我的大学花了我 3 万英镑的钱来教我不应该使用的功能。

标签: php mysql


【解决方案1】:

根据PHP 手册,您应该使用以下任何一种:

需要明确的是,这些都不是mysql_num_rows() 的替代品。您的代码最终必须完全重写以使用 MySQLi 或 PDO API 代替 mysql_*()

【讨论】:

    【解决方案2】:

    就个人而言,我现在使用MySQL Improved extension

    如果您选择以程序方式使用它,它的使用方式与您当前使用旧 MySQL 扩展的方式非常相似。

    示例(MySQL):

    $result = mysql_query($query);
    
    if (!$result) die ("Database access failed: " . mysql_error());
    
    $rows = mysql_num_rows($result);
    

    示例(MySQL 改进):

    $result = mysqli_query($query);
    
    if (!$result) die ("Database access failed: " . mysqli_error());
    
    $rows = mysqli_num_rows($result);
    

    但是,我以面向对象的方式使用 MySQL 改进。

    更多信息可以在这里找到:http://www.php.net/manual/en/book.mysqli.php

    【讨论】:

    • 使用mysqli_query()并不比mysql_query()好
    • @YourCommonSense mysqli_query() 未被弃用。这就是重点。
    • 我需要安装一些东西才能使mysqli_* 工作吗?
    • @aliA 您需要确保 MySQL 改进扩展包含在您拥有的 PHP 包中。
    【解决方案3】:

    如果你了解数据库抽象库的概念,请使用safemysql

    $data = $db->getAll($query,$param1,$param2);
    $rows = count($data);
    

    如果您更熟悉使用原始 API 函数,请使用 PDO

    $stm = $pdo->prepare($query);
    $stm->execute(array($param1,$param2));
    $data = $stm->fetchAll();
    $rows = count($data);
    

    注意2个重要的事情:

    • 请求的数据已存储在 $data 变量中。
    • 每个动态查询部分(即插入的变量)必须通过 placeholder 插入

    【讨论】:

    • 谢谢你的笔记,很有用。 PDO 现在是我的新宝贝。
    【解决方案4】:

    通过php.net/mysql_num_rows手册

    mysql_num_rows

    此扩展自 PHP 5.5.0 起已弃用,将来将被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL:选择 API 指南和相关的常见问题解答以获取更多信息。此功能的替代方案包括:

    【讨论】:

      【解决方案5】:

      正如官方mysql_num_rows function description 提到的,您可以使用MysqliPDO_MYSQL 作为替代方案。

      【讨论】:

        【解决方案6】:

        don't use mysql_* functions in new code.

        它们不再被维护并且是officially deprecated。看到red box?改为了解prepared statements,并使用PDOMySQLi - 本文将帮助您决定使用哪个。

        如果你选择 PDO,这里是good tutorial

        【讨论】:

        • 这种几乎是自动的回复非常烦人,并且无法正确回答问题。
        猜你喜欢
        • 2020-04-20
        • 2018-01-03
        • 2014-10-27
        • 2020-09-23
        • 2014-03-14
        • 2014-09-18
        • 2012-10-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多