Php 不推荐使用的MySql函数

Php 不推荐使用的MySql函数,php,mysql,mysqli,Php,Mysql,Mysqli,Php在未来几天内不会进行推广 在PHP手册中有一些关于清理弃用函数的示例。但例如,;当我在下面的代码中将mysqli\u查询替换为mysqli\u查询时,无法工作。此外,记事本++将它们视为自己定义的函数。所有示例都使用PHP手册中的OOP。我需要一个不使用对象编程的例子 有人能告诉我如何从不推荐的mysql函数中清除代码吗 function db_connect_select() { $connection = @mysql_connect(MYSQL_HOSTNAME,

Php在未来几天内不会进行推广

在PHP手册中有一些关于清理弃用函数的示例。但例如,;当我在下面的代码中将
mysqli\u查询
替换为
mysqli\u查询
时,无法工作。此外,记事本++将它们视为自己定义的函数。所有示例都使用PHP手册中的OOP。我需要一个不使用对象编程的例子

有人能告诉我如何从不推荐的mysql函数中清除代码吗

function db_connect_select() 
{
        $connection = @mysql_connect(MYSQL_HOSTNAME, USERNAME_SELECT, PASSWORD);

        if (!$connection)
        {
          return false; 
        }

        if (!mysql_select_db(DATABASE))
        {
          return false; 
        }

        mysql_query("SET NAMES UTF8");

        return $connection;    
}

function db_result_to_array($result) 
{
    $res_array = array();

    for ($count = 0; $row = mysql_fetch_array($result); $count++)
    {
      $res_array[$count] = $row;    
    }
    return $res_array;
}


function select_top_tags()
{
    $connection = db_connect_select();

    $query = 'SELECT * FROM top_tags ORDER BY tag_name ASC';

    $result = db_result_to_array(mysql_query($query));

    if(mysql_ping($connection))
    {
        mysql_close($connection); 
    } 

    return $result; 
}

这毫无意义。
单纯的机械更换是没有好处的

您必须了解,不是旧函数本身,而是不鼓励使用它们的旧方法。

因此,如果您想保持当前代码的原样,只需保持它。
手册中的红色框并没有那么吓人,而且这些函数实际使用的版本会引发不推荐的级别错误,但还没有发布。
所以,在你遇到任何不便之前,你还有3-4年的时间。即使这样,关闭不推荐的级别错误也是一个运行时设置问题

但是,如果你想编写更好的代码,你必须使用面向对象的方法来编写(我可以向你保证,面向对象并没有那么可怕。虽然编写时需要一些知识,但使用现成的类是非常容易的。与熟悉的函数唯一的区别是有一点
->
的东西。没什么大不了的)

那么,给你:

function db_connect_select() 
{
    $dsn = 'mysql:host='.MYSQL_HOSTNAME.';dbname='.DATABASE.';charset=utf8';
    $opt = array(
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ); 
    return new PDO($dsn,USERNAME_SELECT, PASSWORD, $opt);
}

function db_result_to_array($query,) 
{
  // not needed with PDO
}

function select_top_tags()
{
    global $pdo;

    $query = 'SELECT * FROM top_tags ORDER BY tag_name ASC';
    $stm = $pdo->prepare($query);
    $stm->execute();
    return $stm->fetchAll();
}
用法:

$pdo = db_connect_select(); // somewhere in a bootstrap file
$tags = select_top_tags();

这毫无意义。
单纯的机械更换是没有好处的

您必须了解,不是旧函数本身,而是不鼓励使用它们的旧方法。

因此,如果您想保持当前代码的原样,只需保持它。
手册中的红色框并没有那么吓人,而且这些函数实际使用的版本会引发不推荐的级别错误,但还没有发布。
所以,在你遇到任何不便之前,你还有3-4年的时间。即使这样,关闭不推荐的级别错误也是一个运行时设置问题

但是,如果你想编写更好的代码,你必须使用面向对象的方法来编写(我可以向你保证,面向对象并没有那么可怕。虽然编写时需要一些知识,但使用现成的类是非常容易的。与熟悉的函数唯一的区别是有一点
->
的东西。没什么大不了的)

那么,给你:

function db_connect_select() 
{
    $dsn = 'mysql:host='.MYSQL_HOSTNAME.';dbname='.DATABASE.';charset=utf8';
    $opt = array(
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ); 
    return new PDO($dsn,USERNAME_SELECT, PASSWORD, $opt);
}

function db_result_to_array($query,) 
{
  // not needed with PDO
}

function select_top_tags()
{
    global $pdo;

    $query = 'SELECT * FROM top_tags ORDER BY tag_name ASC';
    $stm = $pdo->prepare($query);
    $stm->execute();
    return $stm->fetchAll();
}
用法:

$pdo = db_connect_select(); // somewhere in a bootstrap file
$tags = select_top_tags();

mysqli.*
函数不能替代
mysql.*
函数。它们以不同的方式使用,简单的更换将不起作用。互联网上有许多教程介绍如何在PHP中使用
mysqli.*
函数,例如,

mysqli.*
函数不是
mysql.*
函数的替代品。它们以不同的方式使用,简单的更换将不起作用。互联网上有很多教程介绍如何在PHP中使用
mysqli_*
函数,例如..

我认为您应该仔细阅读,因为它专门讨论了两个扩展之间的(细微)差异

一些例子:

// no select_db, give db to _connect call
$connection = @mysqli_connect(MYSQL_HOSTNAME,USERNAME_SELECT,PASSWORD,DATABASE);

// need to give the connection parameter to mysqli_query
mysqli_query($connection,"SET NAMES UTF8");
等等


正如其他人已经说过的,提供此过程接口主要是为了方便和简化转换。同时,您应该花一些时间来掌握更新的db接口中使用的更现代的概念-我强烈建议您看看,目前最好的PHP数据库API。

我认为您应该仔细阅读,因为它专门讨论了两个扩展之间的(微小)差异

一些例子:

// no select_db, give db to _connect call
$connection = @mysqli_connect(MYSQL_HOSTNAME,USERNAME_SELECT,PASSWORD,DATABASE);

// need to give the connection parameter to mysqli_query
mysqli_query($connection,"SET NAMES UTF8");
等等


正如其他人已经说过的,提供此过程接口主要是为了方便和简化转换。同时,您应该投入一些时间来掌握更新的db接口中使用的更现代的概念-我强烈建议您看看,目前为止,PHP最好的数据库API。

mysqli
的工作原理与mysql略有不同。您不能只在每个函数调用中添加一个
i
,然后期望它工作。(如果这就是你要问的)如果你用mysql创建数据库,我想,它不能与mysqli函数一起工作。它们是不同的。你可以找到更多使用mysqli来@Amir:完全错误的例子。它只是一个数据库,不管是什么创建的。
mysqli
的工作原理与mysql略有不同。您不能只在每个函数调用中添加一个
i
,然后期望它工作。(如果这就是你要问的)如果你用mysql创建数据库,我想,它不能与mysqli函数一起工作。它们是不同的。你可以找到更多使用mysqli来@Amir:完全错误的例子。它只是一个数据库,不管是什么创建的。