Oturum kimliği ile CodeIgniter'daki MySQL Query

3 Cevap php

Diyelim ki bir sorgu var diyelim:

" SELECT * FROM table 
      WHERE donor_id = " .$this->session->userdata('id') ." 
      GROUP BY rating"

Ancak, ben $this->session->userdata('id') yerine 25 Örneğin, 'Bana '25 verir. Gerekçe, burada bir mysql sözdizimi hatası olsun görünür $this->session->userdata('id') olmaktan önlemek için burada herhangi bir geçici çözümler var mı alıntı?

Teşekkürler.

3 Cevap

intval($this->session->userdata('id'))

CI, bu her zaman yapmak:

$id = intval($this->session->userdata('id'));
$sql = "  SELECT * ".
       "    FROM table ".
       "   WHERE donor_id = {$id} ". 
       "GROUP BY rating ";
//process $sql below

Böyle sorgu oluşturma nokta hatadan daha kolay yapmak ve SQL enjeksiyonu önlemek olacaktır. Eğer birden çok satıra sorguyu bölmek yerine, uzun bir dize birden yapmak gerekir kullanın birleştirme gerçek sorgu dizesi çok uzun var önlemektir. SQL anahtar kelime daha kolay nokta mantıklı ve sözdizimi hata yapmaktır girinti.

Eğer size her zaman settype veya intval kullanarak deneyebilirsiniz yerine interger bir dize döndüren anlamına varsayarak:

$var = '2';
settype($var, "integer");
$var = intval($var);

Eğer değer tırnak içermez eminseniz Ancak, tırnak kodlanmış nedense anlamına eğer, sen bir dize yerine yapabilirdi:

ech str_replace("'", "", "'2'"); // prints 2