2012-05-05 2 views
0

쿼리 후 나는

echo $this->db->affected_rows() or echo $this->db->affected_rows($update) 

를 실행하면 내가 CodeIgniter의

$update= $this->db->query("update aas set aa = 'aa' where no=" . $this->db->escape($No) . ""); 

이 같은 쿼리를 가지고는 -1을 반환

존재하는 행을 업데이트 할 때 -1을 얻습니다. 업데이트 할 행이 없어도 여전히 -1을 표시합니다.

무엇이 문제입니까? mysqli 드라이버와 함께 codeigniter 2.1.0을 사용하고있다.

phpmyadmin에서 실행 해 보았는데, 적절한 0 또는 1 행이 data.But에 의해 영향을 받았다. 그러나 codeigniter를 통해 실행할 때 -1 일 때 업데이트 할 값이 변경되거나 동일한 남아있다

쿼리는 항상 CodeIgniter의에서 사실

할 때 나는 된답니다 mysqli 드라이버에

+0

가 직접 데이터베이스에 쿼리를 실행하려고 할 수 있습니까? 그냥 의도 한 쿼리가 실제로 직접 실행되는지 확인한 다음 디버깅을 계속할 수 있습니다. – Bryan

+0

phpmyadmin에서 실행 해 보았습니다. 적절한 0 또는 1 행이 data.But에 따라 영향을받습니다. codeigniter 통해 그것을 실행 -1 – bleu

답변

3

표시 영향을받는 행의 수를 설정했기 때문에 그것을인가 "쓰기"유형 쿼리 (삽입, 업데이트 등).

참조 번호 : Here.

(그래서 실행되는되지 않음) sql 문에

잘못된 (따옴표)

$update= $this->db->query("update aas set aa = 'aa' where no=" . $this->db->escape($No) . ""); 

그것은 전적으로 당신에게 달려 있습니다,하지만 당신은 또한 CodeIgniter의의 Active Record Class에이 쿼리를 변환 할 수

$update = $this->db->query("update aas set aa = 'aa' where no = '{$this->db->escape($No) }'"); 
echo $this->db->affected_rows(); 
+0

쿼리는 항상 codeigniter에 사실입니다. 나는 phpMyAdmin에서 그것을 실행하려고 시도하고 나에게 적절한 0 또는 1 행을 data.But에 의해 영향을 받으면 codeigniter를 통해 실행할 때 나는 심지어 업데이트 될 값이 변경되거나 동일하게 남아있을 때 codeigniter mysqli 드라이버를 사용 설정했기 때문에 – bleu

0

해야한다 . 자동으로 모든 것을 이스케이프 할뿐만 아니라 간단한 쿼리에 사용하기 쉽고 SQL 문에서 잘못된 따옴표로 인한 잠재적 인 문제를 피할 수 있습니다.

그래서, 액티브 레코드에 대해, 그 결과는 다음과 같습니다 당신이 그것을 가지고

$data = array(
    'aa' => 'aa' 
); 

$this->db->where('no', $No)->update('aas', $data); 

echo $this->db->affected_rows(); // this should return 1 now 
+0

phpmyadmin에서 실행 해 보았습니다. 적절한 0 또는 1 행을 data.But에 의해 영향을주었습니다. 그러나 codeigniter를 통해 실행하면 -1이됩니다. 업데이트 될 내용이 변경되거나 동일하게 유지됨 쿼리는 항상 codeigniter에서 true이므로 현재 활성 레코드가 필요하지 않습니다. – bleu