显示这句话 Call to undefined method mysqli_result::fetch_all() in /home/u852222608/public_html/message.php下面是代码:
<?php
ob_start();
session_start();
$username = $_POST["username"];
$password = $_POST["password"];
$mysql = new mysqli("127.0.0.1:8889","root","123456","myPhp");
$a = $mysql->query("set names utf8");
  if ($a) {
    $result = $mysql->query("select password from user where name = '$username'");
    if ($result->num_rows) {
      # code...
      $array = $result->fetch_all(MYSQLI_ASSOC);
      foreach ($array as $value) {
        # code...
        if ($password == $value["password"]) {
          # code...
          $_SESSION["username"] = $username;
          echo   "<script>alert('登录成功');location.href='".$_SERVER["HTTP_REFERER"]."';</script>";
        }else{
          echo "<script>alert('密码不正确或不能为空');history.go(-1)</script>";
        }
      }
    }else{
      echo "<script>alert('用户名不能为空或注册后再登录');history.go(-1)</script>";
    }
  }else{
    echo "<script>alert('用户名不能为空或密码');history.go(-1)</script>";
  }
?>

解决方案 »

  1.   

    select password from user where name = '$username
    换成  
    select * from user where name = '$username 看看
      

  2.   

    也可能mysqli扩展 没开,
      

  3.   

    可能是php版本太低了。那个方法要5.3以上版本的php才可以。
      

  4.   

    mysqli扩展这么开啊
      

  5.   

    这就不清楚了。5.6的话,开启mysqli扩展应该是可以的。你这个肯定是已经加载扩展了,因为已经能连上数据库了,只不过是一个方法问题。5.4开始,已经默认开启mysqlnd,我在5.6下试了代码是可以的,在5.2下是不行的。
    另外,代码的逻辑有些问题。
      

  6.   

    php_mysql已淘汰,应使用mysqli或pdopdo可以参考:http://www.jb51.net/article/66204.htm
      

  7.   

    php_mysql已淘汰,应使用mysqli或pdopdo可以参考:http://www.jb51.net/article/66204.htm使用pdo重写一下,具体参考上面地址。
      

  8.   

    这里有一个封装好的MySQL类,可以调用存储过程和执行SQL语句,支持多结果集。http://www.allmai.net/?ctrl=detail&method=note&id=12&typename=note