sql >> Databasteknik >  >> RDS >> Mysql

Codeigniter simple_query vs. frågebyggare (infoga, uppdatera och ta bort)

simple_query() är den enda databasmetoden i CodeIgniter som beter sig som du har påpekat. Som dokumentationen säger:"De flesta användare kommer sällan att använda den här funktionen."

Med några få undantag returnerar alla andra Query Builder-metoder antingen en DB_query_builder instans ett CI_DB_result objekt eller - i fallet med frågor av typen "write" - en boolean som indikerar framgång eller misslyckande. De få undantagen returnerar ett heltal, sträng eller blandat (ett värde eller FALSE).

Alla metoder som accepterar inmatningsvärden escape (eller eventuellt inte escape) de angivna värdena.

Även om Query Builder (QB) är ett bra verktyg är det ofta inte nödvändigt. Använder $this->db->query('your statement here'); är ofta mer effektivt. Förstå målet med QB är att skapa en sträng som bokstavligen används i ett anrop till db->query('a query string'); .

Så istället för att skriva allt detta...

$this->db->select('id, name, email');
$this->db->from('customers');
$this->db->where('id', $id)
$this->db->where('active', $is_active)
$query = $this->get();
$result = $query->result();

Att skriva följande ger exakt samma resultat som ovan eftersom det direkt tillhandahåller frågesträngen som QB byggde i ovanstående kod. (Frågan är helt escaped också.) Men den kör en ton mindre kod för att komma dit. (Med mindre skrivning.)

$query = $this->db->query("Select id, name, email from customers where id = ? and active = ?", [$id, $is_active]);
$result = $query->result();

Det här är ett exempel på hur du använder Frågebindning

Om du studerar kärnkällkoden (mest i 'drivrutinsfiler') kommer du att visa dig var du använder simple_query() är lämpligt och användbart.




  1. sp_executesql är långsam med parametrar

  2. MySQL går igenom tabeller

  3. SQLite CHECK-begränsningar

  4. 2 sätt att lägga till ledande nollor i PostgreSQL