問題描述
Php 不會(huì)在 一些 MySql 函數(shù)中推廣即將到來的日子.
Php is not going to promote some MySql functions in upcoming days.
PHP 手冊(cè)中有一些關(guān)于清除不推薦使用的函數(shù)的示例.但例如;當(dāng)我在下面的代碼中用 mysqli_query
替換 mysql_query
時(shí)不起作用.Notepad++ 也將它們視為由我自己定義的函數(shù).所有示例均使用 PHP 手冊(cè)中的 OOP.我需要一個(gè)不使用面向?qū)ο缶幊痰氖纠?
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 函數(shù)中清除我的代碼?
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;
}
推薦答案
這毫無意義.
單純的機(jī)械更換是沒有用的.
It will just make no sense.
A mere mechanical replacement will do no good.
你必須明白,它不是舊函數(shù)本身,而是不鼓勵(lì)使用它們的舊方法.
因此,如果您想保持當(dāng)前代碼不變 - 只需保留它.
手冊(cè)中的紅框并不那么可怕,而且這些功能實(shí)際上會(huì)引發(fā)棄用級(jí)別錯(cuò)誤的版本尚未發(fā)布.
所以,在你遇到任何不便之前,你還有 3-4 年的時(shí)間.即便如此,關(guān)閉棄用級(jí)別的錯(cuò)誤也是一個(gè)運(yùn)行時(shí)設(shè)置的問題.
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 不是那可怕的.雖然它在編寫時(shí)需要一些知識(shí),但使用現(xiàn)成的類非常容易.與熟悉的函數(shù)唯一的區(qū)別是一點(diǎn)點(diǎn)->
東西.沒什么大不了的)
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();
這篇關(guān)于棄用的 MySql 函數(shù)的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!