Heim  >  Fragen und Antworten  >  Hauptteil

Warum kann ich $mysqli->query nicht in einer benutzerdefinierten Funktion verwenden?

MCXCI}8`AS6FQ6ZJ7TUW)%H.png

别闹i别闹i2564 Tage vor970

Antworte allen(1)Ich werde antworten

  • 天蓬老师

    天蓬老师2017-09-15 14:31:20

    你的使用有问题呀~~

    $mysqli->query()使用的前提是:你创建了$mysqli对象,不知你在dbconfigs.php文件中有没有创建这个对象?

    还有,你在下面又用了mysqli_fetch_array()这是典型的面向对程的语句,实在不明白,你究竟想怎么调用数据?

    如果你想使用面向对象,请这样使用:

    $mysqli = new mysqli($host,$userName,$password,$dbName);
    if ($mysqli->connect_errno){
        die('Error Connected'.$mysqli->connect_error;
    }
    $result = $mysqli->query('SELECT * FROM table_name');
    if ($result && $result->num_rows > 0){
    while($row = $result->fetch_array(MYSQLI_ASSOC)){
       //输出数据
     }
     $result->free_result();
    }
    $mysqli->close();

    如果是面向过程,请将以上代码修改一下:

    $conn = mysqli_connect($host,$userName,$password,$dbName);
    if (mysqli_connect_errno($conn)){
        die('Error Connected'.mysqli_connect_error($conn);
    }
    $result = mysqli_query('SELECT * FROM table_name');
    if ($result && mysqli_num_rows($conn,$result) > 0){
    while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){
       //输出数据
     }
     mysqli_free($result);
    }
    mysqli_close($conn);

    请不要将面向对象和面向过程混用。

    PHP中文网有针对这二部分的教程:

    http://www.php.cn/course/653.html (MySQLi面向对象)

    http://www.php.cn/course/653.html (MySQLi面向过程)

    Antwort
    1
  • 别闹i

    $mysqli=new mysqli("localhost","root","root","perform_file") or die("链接数据库失败"); $mysqli->query("set names utf8"); //这就是dbconfigs.php里面的配置 mysqli_fetch_array //这不是把查询出来的结果集通过数组循环出来吗?

    别闹i · 2017-09-18 09:23:35
    别闹i

    请问dbconfigs.php里面的配置有问题吗?

    别闹i · 2017-09-18 09:43:54
    天蓬老师

    mysqli_fetch_array()是将结果集逐条的转为数组输出,包括索引与关联

    天蓬老师 · 2017-09-18 09:29:22
  • StornierenAntwort