前言

这几天折腾网络安全的玩意,在搭建安全测试平台的过程中出现了点小问题。

安全测试平台使用的php版本是5.x,但我在服务器上安装的是7.x,7.x的php废除了对mysql的api,添加了一套新的api,mysqli。

虽然可以去安装php5.x来解决这个问题,不过常用的5.6好像也不支持了,那就不折腾了。

考虑到各种因素,于是乎用mysqli的api修改一下,做了个mysql的api兼容层。

代码

仅实现了一些基础api。

<?php
if(!function_exists('mysql_connect')){
  function mysql_get_connection($conn){
    if (!empty($conn)) {
      return $conn;
    }
    global $g_conn;
    return $g_conn;
  }

  function mysql_connect($host,$user,$passwd){
    global $g_conn;
    $g_conn = mysqli_connect($host,$user,$passwd);
    return $g_conn;
  }

  function mysql_select_db($dbname,$conn){
    return mysqli_select_db($conn,$dbname);
  }

  function mysql_errno($conn=null){
    $conn = mysql_get_connection($conn);
    return mysqli_errno($conn);
  }

  function mysql_error($conn=null){
    $conn = mysql_get_connection($conn);
    return mysqli_error($conn);
  }

  function mysql_fetch_array($result){
    return mysqli_fetch_array($result);
  }

  function mysql_fetch_assoc($result){
    return mysqli_fetch_assoc($result);
  }

  function mysql_fetch_row($result){
    return mysqli_fetch_row($result);
  }

  function mysql_insert_id($conn=null){
    $conn = mysql_get_connection($conn);
    return mysqli_insert_id($conn=null);
  }

  function mysql_num_rows($result){
    return mysqli_num_rows($result);
  }

  function mysql_query($sql,$conn=null){
    $conn = mysql_get_connection($conn);
    return mysqli_query($conn,$sql);
  }

  function mysql_real_escape_string($data){
    $conn = mysql_get_connection($conn);
    return mysqli_real_escape_string($conn,$data);
  }

  function mysql_get_server_info($conn=null){
    $conn = mysql_get_connection($conn);
    return mysqli_get_server_info($conn=null);
  }

  function mysql_ping($conn=null){
    $conn = mysql_get_connection($conn);
    return mysqli_ping($conn);
  }
}