弃用的 MySql 函数

Deprecated MySql Functions(弃用的 MySql 函数)
本文介绍了弃用的 MySql 函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

Php 不会在 一些 MySql 函数中推广即将到来的日子.

Php is not going to promote some MySql functions in upcoming days.

PHP 手册中有一些关于清除不推荐使用的函数的示例.但例如;当我在下面的代码中用 mysqli_query 替换 mysql_query 时不起作用.Notepad++ 也将它们视为由我自己定义的函数.所有示例均使用 PHP 手册中的 OOP.我需要一个不使用面向对象编程的示例.

There is some examples about cleaning deprecated functions in PHP manual. But for example; when i replace mysql_query with mysqli_query in code below doesn't work. Also Notepad++ treats them like functions which is defined by myself. All examples are using OOP in PHP manual. I need an example without using object orianted programing.

谁能告诉我如何从不推荐使用的 mysql 函数中清除我的代码?

Can someone tell me that how can i clean my code from deprecated mysql functions?

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; 
}

推荐答案

这毫无意义.
单纯的机械更换是没有用的.

It will just make no sense.
A mere mechanical replacement will do no good.

你必须明白,它不是旧函数本身,而是不鼓励使用它们的旧方法.

因此,如果您想保持当前代码不变 - 只需保留它.
手册中的红框并不那么可怕,而且这些功能实际上会引发弃用级别错误的版本尚未发布.
所以,在你遇到任何不便之前,你还有 3-4 年的时间.即便如此,关闭弃用级别的错误也是一个运行时设置的问题.

So, if you want to keep your current code as is - just keep it.
A red box in the manual is not that scary, and the version in which these functions are actually would raise a deprecated-level error is not out yet.
So, you have a 3-4 years ahead, before you will encounter whatever inconvenience. And even then to turn off deprecated-level errors is a matter of one runtime setting.

但是如果你想编写更好的代码 - 你必须使用 OOP 方式和 PDOstrong>(我可以向你保证,OOP 不是可怕的.虽然它在编写时需要一些知识,但使用现成的类非常容易.与熟悉的函数唯一的区别是一点点-> 东西.没什么大不了的)

But if you want to write the better code - you have to use OOP way with PDO (and I can assure you that OOP is not that scaring. Although it require some knowledge when writing, it is very easy to use a ready made class. The only difference from familiar functions is a little -> thing. Not a big deal)

那么,给你:

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();

这篇关于弃用的 MySql 函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Warning: mysqli_query() expects at least 2 parameters, 1 given. What?(警告:mysqli_query() 需要至少 2 个参数,1 个给定.什么?)
INSERT query produces quot;Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean givenquot;(INSERT 查询产生“警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,给出布尔值;)
prepared statements - are they necessary(准备好的陈述 - 它们是否必要)
Do I need to escape my variables if I use MySQLi prepared statements?(如果我使用 MySQLi 准备好的语句,是否需要转义我的变量?)
Properly Escaping with MySQLI | query over prepared statements(使用 MySQLI 正确转义 |查询准备好的语句)
Is it possible to use mysqli_fetch_object with a prepared statement(是否可以将 mysqli_fetch_object 与准备好的语句一起使用)