首頁  >  問答  >  主體

在自訂函數裡面,為什麼不能使用$mysqli->query?

MCXCI}8`AS6FQ6ZJ7TUW)%H.png

#
别闹i别闹i2614 天前1002

全部回覆(1)我來回復

  • 天蓬老师

    天蓬老师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面向過程)

    回覆
    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
  • 取消回覆