您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么我不应该在 PHP 中使用 mysql_* 函数?

为什么我不应该在 PHP 中使用 mysql_* 函数?

MysqL 扩展:

未在积极开发中

被的PHP 5.5(发布2013年6月)。

PHP 7.0起

完全删除

(2015 年 12 月发布)

这意味着截至 2018 年 12 月 31 日,它不存在于任何受支持PHP 版本中。如果您使用的 PHP 版本支持它,那么您使用的版本没有修复安全问题。

缺少 OO 接口

不支持

非阻塞、异步查询

由于它已被弃用,因此使用它会使您的代码不那么具有前瞻性。

缺少对准备好的语句的支持尤其重要,因为与使用单独的函数调用手动转义外部数据相比,它们提供了一种更清晰、更不容易出错的转义和引用外部数据的方法

可以MysqL_*使用 MysqLi 或 PDO定义几乎所有函数。只需将它们包含在旧的 PHP 应用程序之上,它就可以在 PHP7 上运行。

<?PHP

define('MysqL_LINK', 'dbl');
$GLOBALS[MysqL_LINK] = null;

function MysqL_link($link=null) {
    return ($link === null) ? $GLOBALS[MysqL_LINK] : $link;
}

function MysqL_connect($host, $user, $pass) {
    $GLOBALS[MysqL_LINK] = MysqLi_connect($host, $user, $pass);
    return $GLOBALS[MysqL_LINK];
}

function MysqL_pconnect($host, $user, $pass) {
    return MysqL_connect($host, $user, $pass);
}

function MysqL_select_db($db, $link=null) {
    $link = MysqL_link($link);
    return MysqLi_select_db($link, $db);
}

function MysqL_close($link=null) {
    $link = MysqL_link($link);
    return MysqLi_close($link);
}

function MysqL_error($link=null) {
    $link = MysqL_link($link);
    return MysqLi_error($link);
}

function MysqL_errno($link=null) {
    $link = MysqL_link($link);
    return MysqLi_errno($link);
}

function MysqL_ping($link=null) {
    $link = MysqL_link($link);
    return MysqLi_ping($link);
}

function MysqL_stat($link=null) {
    $link = MysqL_link($link);
    return MysqLi_stat($link);
}

function MysqL_affected_rows($link=null) {
    $link = MysqL_link($link);
    return MysqLi_affected_rows($link);
}

function MysqL_client_encoding($link=null) {
    $link = MysqL_link($link);
    return MysqLi_character_set_name($link);
}

function MysqL_thread_id($link=null) {
    $link = MysqL_link($link);
    return MysqLi_thread_id($link);
}

function MysqL_escape_string($string) {
    return MysqL_real_escape_string($string);
}

function MysqL_real_escape_string($string, $link=null) {
    $link = MysqL_link($link);
    return MysqLi_real_escape_string($link, $string);
}

function MysqL_query($sql, $link=null) {
    $link = MysqL_link($link);
    return MysqLi_query($link, $sql);
}

function MysqL_unbuffered_query($sql, $link=null) {
    $link = MysqL_link($link);
    return MysqLi_query($link, $sql, MysqLI_USE_RESULT);
}

function MysqL_set_charset($charset, $link=null){
    $link = MysqL_link($link);
    return MysqLi_set_charset($link, $charset);
}

function MysqL_get_host_info($link=null) {
    $link = MysqL_link($link);
    return MysqLi_get_host_info($link);
}

function MysqL_get_proto_info($link=null) {
    $link = MysqL_link($link);
    return MysqLi_get_proto_info($link);
}
function MysqL_get_server_info($link=null) {
    $link = MysqL_link($link);
    return MysqLi_get_server_info($link);
}

function MysqL_info($link=null) {
    $link = MysqL_link($link);
    return MysqLi_info($link);
}

function MysqL_get_client_info() {
    $link = MysqL_link();
    return MysqLi_get_client_info($link);
}

function MysqL_create_db($db, $link=null) {
    $link = MysqL_link($link);
    $db = str_replace('`', '', MysqLi_real_escape_string($link, $db));
    return MysqLi_query($link, "CREATE DATABASE `$db`");
}

function MysqL_drop_db($db, $link=null) {
    $link = MysqL_link($link);
    $db = str_replace('`', '', MysqLi_real_escape_string($link, $db));
    return MysqLi_query($link, "DROP DATABASE `$db`");
}

function MysqL_list_dbs($link=null) {
    $link = MysqL_link($link);
    return MysqLi_query($link, "SHOW DATABASES");
}

function MysqL_list_fields($db, $table, $link=null) {
    $link = MysqL_link($link);
    $db = str_replace('`', '', MysqLi_real_escape_string($link, $db));
    $table = str_replace('`', '', MysqLi_real_escape_string($link, $table));
    return MysqLi_query($link, "SHOW COLUMNS FROM `$db`.`$table`");
}

function MysqL_list_tables($db, $link=null) {
    $link = MysqL_link($link);
    $db = str_replace('`', '', MysqLi_real_escape_string($link, $db));
    return MysqLi_query($link, "SHOW TABLES FROM `$db`");
}

function MysqL_db_query($db, $sql, $link=null) {
    $link = MysqL_link($link);
    MysqLi_select_db($link, $db);
    return MysqLi_query($link, $sql);
}

function MysqL_fetch_row($qlink) {
    return MysqLi_fetch_row($qlink);
}

function MysqL_fetch_assoc($qlink) {
    return MysqLi_fetch_assoc($qlink);
}

function MysqL_fetch_array($qlink, $result=MysqLI_BOTH) {
    return MysqLi_fetch_array($qlink, $result);
}

function MysqL_fetch_lengths($qlink) {
    return MysqLi_fetch_lengths($qlink);
}

function MysqL_insert_id($qlink) {
    return MysqLi_insert_id($qlink);
}

function MysqL_num_rows($qlink) {
    return MysqLi_num_rows($qlink);
}

function MysqL_num_fields($qlink) {
    return MysqLi_num_fields($qlink);
}

function MysqL_data_seek($qlink, $row) {
    return MysqLi_data_seek($qlink, $row);
}

function MysqL_field_seek($qlink, $offset) {
    return MysqLi_field_seek($qlink, $offset);
}

function MysqL_fetch_object($qlink, $class="stdClass", array $params=null) {
    return ($params === null)
        ? MysqLi_fetch_object($qlink, $class)
        : MysqLi_fetch_object($qlink, $class, $params);
}

function MysqL_db_name($qlink, $row, $field='Database') {
    MysqLi_data_seek($qlink, $row);
    $db = MysqLi_fetch_assoc($qlink);
    return $db[$field];
}

function MysqL_fetch_field($qlink, $offset=null) {
    if ($offset !== null)
        MysqLi_field_seek($qlink, $offset);
    return MysqLi_fetch_field($qlink);
}

function MysqL_result($qlink, $offset, $field=0) {
    if ($offset !== null)
        MysqLi_field_seek($qlink, $offset);
    $row = MysqLi_fetch_array($qlink);
    return (!is_array($row) || !isset($row[$field]))
        ? false
        : $row[$field];
}

function MysqL_field_len($qlink, $offset) {
    $field = MysqLi_fetch_field_direct($qlink, $offset);
    return is_object($field) ? $field->length : false;
}

function MysqL_field_name($qlink, $offset) {
    $field = MysqLi_fetch_field_direct($qlink, $offset);
    if (!is_object($field))
        return false;
    return empty($field->orgname) ? $field->name : $field->orgname;
}

function MysqL_field_table($qlink, $offset) {
    $field = MysqLi_fetch_field_direct($qlink, $offset);
    if (!is_object($field))
        return false;
    return empty($field->orgtable) ? $field->table : $field->orgtable;
}

function MysqL_field_type($qlink, $offset) {
    $field = MysqLi_fetch_field_direct($qlink, $offset);
    return is_object($field) ? $field->type : false;
}

function MysqL_free_result($qlink) {
    try {
        MysqLi_free_result($qlink);
    } catch (Exception $e) {
        return false;
    }
    return true;
}
php 2022/1/1 18:38:07 有695人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶