2017-05-16 10 views
3

選択クエリを実行しようとしている間に、実行時に不要な引用符が挿入される状況に陥りました。私はCodeigniterで働いています。最初の4文字が同じレコードを選択しようとしています。 コードは次のとおりです。ありきたり(SUBSTRための単一引用符)でクエリに実行中にsqlに不要な引用符を追加する - codeigniter

FUNCTION dbname.SUBSTR does not exist. Check the 'Function Name Parsing 
and Resolution' section in the Reference Manual 

SELECT c.first_name as cfn, u.first_name as ufn FROM (`contacts` c) 
JOIN `users` u ON `SUBSTR`(`u`.`first_name` , 1 , 4) = SUBSTR(c.first_name , 1 , 4) 
WHERE `c`.`status` = 1 AND `c`.`first_name` != '' 

`SUBSTR`

$calendar = $this->db->select("c.first_name as cfn, u.first_name as ufn", false) 
     ->from("{$this->tables['contacts']} c") 
     ->join("{$this->tables['users']} u", " SUBSTR(u.first_name , 1 , 4) = SUBSTR(c.first_name , 1 , 4) ", '') 
     ->where(array('c.status' => 1, 'c.first_name !=' => '')) 
     ->get()->result_array(); 

は私がようなエラーになっています。

+0

を( '{$ this-> tables [users]} u'、 'SUBSTR(u.first_name、1、4)= SUBSTR(c.first_name、1、4)'、) ')試してみる。 5月はあなたのために働いています – vanurag

+0

@vanuragいいえ、そのエラーです。テーブル 'dbname。{$ this-> tables [users]}'が存在しません – Sinto

+1

CI 3.0では、[エスケープ値と識別子](https://www.codeigniter.com/user_guide /database/query_builder.html?highlight=join#CI_DB_query_builder::join) –

答えて

1

を使用して、それを解決し、私が行って、この問題を修正する必要があります:あなたはこれで、JOINを置き換えることができた場合は

$calendar = $this->db->query("SELECT c.first_name as cfn, u.first_name as ufn 
FROM (`contacts` c) JOIN `users` u ON 
((SUBSTR(`u`.`first_name`, 1, 4)) = (SUBSTR(`c`.`first_name`, 1, 4))) 
WHERE `c`.`status` = 1 AND `c`.`first_name` != ''")->result_array(); 
print_r($calendar); 
1

私はかつて同じ問題を抱えていたと私は私の場合は

str_replace('"','',$string); 
+0

ここに文字列とは何ですか?そして、私の問題は実行時間であることに注意してください。str_replace()はそれを修正しますか? – Sinto

関連する問題