Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么脚本不喜欢使用MySQLi,但可以使用MySQL呢?_Php_Mysql_Mysqli - Fatal编程技术网

Php 为什么脚本不喜欢使用MySQLi,但可以使用MySQL呢?

Php 为什么脚本不喜欢使用MySQLi,但可以使用MySQL呢?,php,mysql,mysqli,Php,Mysql,Mysqli,我在使用mysqli执行带有SELECT、DELETE、INSERT和updatequerys的脚本时遇到了一些问题。它们在使用规范mysql(如mysql_connect)时工作,但在使用mysqli时,我得到了奇怪的结果。它可以很好地处理其他脚本中的许多SELECT查询,但当涉及到一些管理内容时,它就搞砸了 如果不附上整个剧本,很难解释 这是用于修改 function database_queryModify($sql,&$insertId) { global $databas

我在使用mysqli执行带有SELECT、DELETE、INSERT和updatequerys的脚本时遇到了一些问题。它们在使用规范mysql(如mysql_connect)时工作,但在使用mysqli时,我得到了奇怪的结果。它可以很好地处理其他脚本中的许多SELECT查询,但当涉及到一些管理内容时,它就搞砸了

如果不附上整个剧本,很难解释

这是用于修改


function database_queryModify($sql,&$insertId)
  {
    global $databaseServer;
    global $databaseName;
    global $databaseUsername;
    global $databasePassword;
    global $databaseDebugMode;

    $link = @mysql_connect($databaseServer,$databaseUsername,$databasePassword);

    @mysql_select_db($databaseName,$link);

    $result = mysql_query($sql,$link);

    if (!$result && $databaseDebugMode)
    {
      print "[".$sql."][".mysql_error()."]";
    }

    $insertId = mysql_insert_id();

    return mysql_affected_rows();
  }
以下是我为mysqli更改的内容


function database_queryModify($sql,&$insertId)
  {
    global $databaseServer;
    global $databaseName;
    global $dbUser_feedadmin;
    global $dbUser_feedadmin_pw;
    global $databaseDebugMode;

    $link = @mysqli_connect($databaseServer,$dbUser_feedadmin,$dbUser_feedadmin_pw,$databaseName);
    $result = mysqli_query($link, $sql);

    if (!$result && $databaseDebugMode)
    {
      print "[".$sql."][".mysqli_error()."]";
    }
    $insertId = mysqli_insert_id();
    return mysqli_affected_rows();
  }
看起来对吗


它实际上并没有产生错误,但其运行方式与使用mysql时不同。有什么想法吗?

这是我通常使用Mysqli的方式

$mysqli = new mysqli($myServer, $myUser, $myPass, $myDB);
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit;
} 
$result = $mysqli->query($query);

while ($row=$result->fetch_assoc()) {
  print_r($row);
}

注意:mysqli是一个类,$mysqli是保存该类实例的变量,query是该类的一个方法,它返回一个具有自己方法的结果类。

就php而言,您正在一次运行所有语句,因此受影响的行或最后插入的id等函数将无法按预期工作。
(如果我错了,请纠正我,我已经有一段时间没有使用mysqli了。)

一些mysqli函数需要一些修补,例如包括$link