亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

?? ??? ??
Array Array Helper Benchmarking Benchmarking Class Caching Caching Driver Calendaring Calendaring Class CAPTCHA CAPTCHA Helper Config Config Class Cookie Cookie Helper Database Connecting to your Database Custom Function Calls Database Caching Class Database Configuration Database Forge Class Database Metadata Database Quick Start: Example Code Database Reference Database Utility Class DB Driver Reference Generating Query Results Queries Query Builder Class Query Helper Methods Transactions Date Date Helper Directory Directory Helper Download Download Helper Email Email Class Email Helper Encrypt Encrypt Class Encryption Encryption Library File File Helper File Uploading File Uploading Class Form Form Helper Form Validation Form Validation FTP FTP Class Functions compatibility_functions common_functions HTML HTML Helper HTML Table HTML Table Class Image Manipulation Image Manipulation Class Inflector Inflector Helper Input Input Class Javascript Javascript Class Language Language Class Language Helper Loader Loader Class Migrations Migrations Class Number Number Helper Output Output Class Pagination Pagination Class Path Path Helper Security Security Class Security Helper Session Session Library Shopping Cart Shopping Cart Class Smiley Smiley Helper String String Helper Template Parser Template Parser Class Text Text Helper Trackback Trackback Class Typography Typography Class Typography Helper Unit Testing Unit Testing Class URI URL User Agent XML XML-RPC and XML-RPC Server Zip Encoding Zip Encoding Class XML-RPC and XML-RPC Server Classes XML Helper User Agent Class URL Helper URI Class
??

查詢基礎(chǔ)

常規(guī)查詢

若要提交查詢,請使用查詢職能:

$this->db->query('YOUR QUERY HERE');

query()函數(shù)在運行“讀取”類型查詢時返回數(shù)據(jù)庫結(jié)果對象,您可以使用該查詢來顯示結(jié)果。當“寫入”類型的查詢運行時,它只是返回TRUE或FALSE,取決于成功或失敗。在檢索數(shù)據(jù)時,您通常會將查詢分配給您自己的變量,如下所示:

$query = $this->db->query('YOUR QUERY HERE');

簡化查詢

simple_query方法是$這- > DB->查詢()方法的簡化版本。它不會返回數(shù)據(jù)庫結(jié)果集,也不會設置查詢計時器或編譯綁定數(shù)據(jù),也不會存儲查詢以進行調(diào)試。它只是讓你提交一個查詢。大多數(shù)用戶很少使用此功能。

它返回數(shù)據(jù)庫驅(qū)動程序的“執(zhí)行”函數(shù)返回的任何內(nèi)容。對于寫入類型查詢(例如INSERT,DELETE或UPDATE語句(這是真正應該使用的語句)以及成功的資源/對象)的成功或失敗,對于具有可捕獲結(jié)果的查詢,這通常為TRUE / FALSE。

if ($this->db->simple_query('YOUR QUERY')){
        echo "Success!";}else{
        echo "Query failed!";}

PostgreSQL的pg_exec()函數(shù)(例如)總是會在成功時返回資源,即使是寫入類型查詢也是如此。所以記住,如果你正在尋找一個布爾值。

手動使用數(shù)據(jù)庫前綴

如果您已經(jīng)配置了數(shù)據(jù)庫前綴,并希望將其添加到表名中以供在本機SQL查詢中使用,則可以使用以下方法:

$this->db->dbprefix('tablename'); // outputs prefix_tablename

如果出于任何原因,您希望在不需要創(chuàng)建新連接的情況下以編程方式更改前綴,則可以使用以下方法:

$this->db->set_dbprefix('newprefix');$this->db->dbprefix('tablename'); // outputs newprefix_tablename

保護標識符

在許多數(shù)據(jù)庫中,建議保護表和字段名稱 - 例如在MySQL中使用反引號。查詢生成器查詢會自動受到保護,但是如果您需要手動保護可以使用的標識符:

$this->db->protect_identifiers('table_name');

重要

雖然查詢生成器將盡最大努力正確引用您提供的任何字段和表名稱,但請注意,它不適用于任意用戶輸入。不要為其提供未經(jīng)處理的用戶數(shù)據(jù)。

假設你在你的數(shù)據(jù)庫配置文件中指定了一個前綴,這個函數(shù)也會為你的表添加一個表前綴。要通過第二個參數(shù)啟用前綴設置TRUE(布爾值):

$this->db->protect_identifiers('table_name', TRUE);

轉(zhuǎn)義查詢

在將數(shù)據(jù)提交到數(shù)據(jù)庫之前,將其轉(zhuǎn)義是一種非常好的安全實踐。CodeIgniter有三種方法可以幫助您這樣做:

  • $ this-> db-> escape()該函數(shù)確定數(shù)據(jù)類型,以便它只能轉(zhuǎn)義字符串數(shù)據(jù)。它還會自動為數(shù)據(jù)添加單引號,因此您不必:$ sql =“INSERT INTO table(title)VALUES(”。$ this-> db-> escape($ title)?!埃?

  1. $ this-> db-> escape_str()無論類型如何,該函數(shù)都會將傳遞給它的數(shù)據(jù)轉(zhuǎn)義出來。大多數(shù)時候你會使用上述功能而不是這個功能。使用這樣的功能:

$ sql =“INSERT INTO table(title)VALUES('”。$ this-> db-> escape_str($ title)?!?#39;)”;

  • $ this-> db-> escape_like_str()當在LIKE條件下使用字符串時,應使用此方法,以便字符串中的LIKE通配符('%','_')也能正確轉(zhuǎn)義。

$search = '20% raise';$sql = "SELECT id FROM table WHERE column LIKE '%" .
    $this->db->escape_like_str($search)."%' ESCAPE '!'";

重要

escape_like_str()方法使用'!' (感嘆號)為LIKE條件轉(zhuǎn)義特殊字符。因為此方法會轉(zhuǎn)義部分字符串,而您將自行換行,所以它不能自動ESCAPE '!'為您添加條件,因此您必須手動執(zhí)行此操作。

查詢綁定

綁定使您能夠簡化查詢語法,方法是讓系統(tǒng)為您將查詢放在一起??紤]以下示例:

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";$this->db->query($sql, array(3, 'live', 'Rick'));

查詢中的問號將自動替換為查詢函數(shù)第二個參數(shù)中數(shù)組中的值。

綁定也適用于數(shù)組,數(shù)組將轉(zhuǎn)換為IN集:

$sql = "SELECT * FROM some_table WHERE id IN ? AND status = ? AND author = ?";$this->db->query($sql, array(array(3, 6), 'live', 'Rick'));

產(chǎn)生的查詢將是:

SELECT * FROM some_table WHERE id IN (3,6) AND status = 'live' AND author = 'Rick'

使用綁定的次要好處是自動轉(zhuǎn)義值,從而產(chǎn)生更安全的查詢。您不必記住手動轉(zhuǎn)義數(shù)據(jù);引擎會自動為您執(zhí)行此操作。

處理錯誤

$這 - > DB->誤差();

如果您需要獲取發(fā)生的最后一個錯誤,那么error()方法將返回一個包含其代碼和消息的數(shù)組。這里有個簡單的例子:

if ( ! $this->db->simple_query('SELECT `example_field` FROM `example_table`')){
        $error = $this->db->error(); // Has keys 'code' and 'message'}
?? ??: ?? ??: