星期六, 1月 23, 2010

mysqli函式

mysqli 分為以下三個類別
   mysqli:負責控制與mysql的連線,執行SQL查詢,執行select後會得到查詢結果
          之mysql_result物件
   mysqli_result:內含select的查詢結果
   mysqli_stmt:用來定義執行參數化的SQL指令,需透過$mysqli->perpare建立mysql_stmt

#建立連線
    不可設定參數
    $mysqli=new mysqli($mysqlhost,$mysqluser,$mysqlpassword,$mysqldb);
     #TEST連線是否成功
    mysqli_connect_errno()
    if (mysqli_connect_errno()) {echo "<p> Sorry,無法連線</p>"};
    或是
    // Works as of PHP 5.2.9 and 5.3.0.
    if($mysqli->connect_errno) {echo "<p> Sorry,無法連線</p>"};

     #close連線
    $mysqli->close();
     設定參數用法
    $mysqli=mysqli_init();  //建立mysqli物件
    $mysqli->options(xxxxx); //設定連線選項(可省略)
    $mysqli->ssl_set(xxxx); //設定SSL選項(可省略)
    $mysqli->real_connect($mysqlhost,$mysqluser,$mysqlpassword,$mysqldb);
                    //與mysql,建立連線

#執行SQL指令
    $mysqli->query("insert into,update delete")
    $mysqli->affected_row //傳回更改筆數
    $mysqli->insert_id //傳回insert 指令所產生之流水號

#select後回傳一個mysqli_result物件
    $result->num_rows //查詢結果的資料筆數
    $result->field_count //欄位數量
    $mysqli->errno $mysqli->error //取得select時錯誤訊息


#select結果讀取
    $row=$result->fetch_row(); //陣列形態,可用$row[$n]存取
    $row=$result->fetch_array(); //關聯陣列,用$row[$n]或$row[$colname]存取
                                     //,名稱區分大小寫
    $row=$result->fetch_assoc(); //關聯陣列,只能用$row[$colname]存取
    $row=$result->fetch_abject(); //以物件方式存取,$row->colname
    ##每次呼叫都會傳回下一筆,直到最後傳回FALSE
    $result->data_seek($row_number)跳到指定欄位


#select結果之相關資訊
    $inf=$result->fetch_fields();傳回相關物件資訊
    $inf[$n]->name  //欄位名稱
    $inf[$n]->table //欄位所屬資料表
    $inf[$n]->max_length //最長資料長度
    $inf[$n]->type  //資料形態


#將參數和php變數連結
    始用前必需先用$mysqli->prepare指定要執行的SQL指令,用?代表參數位置
    $myst=$mysqli->prepare("insert into titles(titles,subtitle,langID)
                               values(?,?,?)");
    與PHP變數連結
    $myst->bind_param('xxx',$title,$subtitle,$langID)
        $title="new one";$subtitle="new two";$langID="new three";
    可以一直重覆run,不會回傳mysqli_result;
    $myst->execute();
    直到close
    $stmt->close();
    ######### select ############
    $myst->bind_prepare("select titleID,title from titles");
    $myst->execute();//執行(此行可省略)
    $myst->store_result();//將結果傳回
    $myst->bind_result($titleId,$title); //與變數連結
    while ($myst->fetch())
        printf("<br />%d %s\n",htmlspecialchars($titleID),
            htmlspecialchars($title));
    $myst->close;


#字串特殊字元
    $mysqli->escape_string($data) //escape會將' " 或是0byte 加上跳脫字元


引用自
貓熊打滾 - mysqli函式

詳細mysqi函式庫
php.net - MySQL Improved Extension

沒有留言:

張貼留言