2013-06-20 3 views
0

나는 데이터의 약 200 행, 열 필드, 난에
연결 아래 여기 사를 사용하여 각 행을 업데이트 할 PDO
를 사용하여 MySQL 데이터베이스에 대용량 데이터를 추가하고 싶습니다 DB는 좀 결과
필드는 잘 작동의 foreach를 사용하여 작성되는 조회 테스트 괜찮지 나 콘텐츠
문제 그러나, 실행 기능의 실행이 에러를 제공한다 를 검증 데이터가 업데이트 대용량 데이터

를 삽입하지 않은 어떤 제발, 현행 코드

//set db 
$host = 'localhost'; 
$dbname = 'dbdata'; 
$attrs = array(PDO::ATTR_PERSISTENT => true); 
$dbHandle = new PDO("mysql:host=$host;dbname=$dbname",'dbdatatable','tblpwd'); 
$dbHandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
//=================================================== 
//prepare sql 
$sql = "UPDATE TickersList SET field1=?, field2=?, field3=? WHERE field4=?"; 
$STH = $dbHandle->prepare($sql); 
//=================================================== 
//declare arrays 
$ufield1 = array(); 
$ufiled2 = array(); 
$ufiled3 = array(); 
$ufiled4 = array(); 
//=================================================== 
//fill arrays with data 
foreach($this->_data as $qty){ 
$ufield1 [] = $qty->data1; 
$ufield2 [] = $qty->data2; 
$ufield3 [] = $qty->data3; 
$ufield4 [] = $qty->data4; 
} 
//=================================================== 
//execute query - not working :(
$STH->execute($sql,$ufield1,$ufield2,$ufield3); 
//=================================================== 

답변

0

호출 방법이 잘못되어 잘못된 위치에 있습니다. 다음과 같이해야합니다.

//fill arrays with data 
foreach($this->_data as $qty){ 

$params = array($qty->data1,$qty->data2,$qty->data3,$qty->data4); 
$STH->execute($params); 

} 
+0

Thx yr feedback hynner. 그것은 실제로 작동합니다. 불행히도 이것은 직접적인 pdo 실행이며 고전적인 mysqlquery보다 훨씬 빠릅니다. (200 행 데이터의 경우 14 초) 속도와 보안을 위해 권장되는 준비된 쿼리 실행을 사용하고 싶습니다. 어떤 생각? – Pavel

+0

분명히 뭔가 잘못하고있는 것 같습니다. 어떤 테이블 엔진을 사용합니까? 내 추측은 InnoDB가 될 것입니다. 쓰기가 더 느립니다. InnoDB가 정말로 필요하지 않다면 MyISAM을 사용해보십시오. [here] (http://stackoverflow.com/questions/7585301/how-tos-for)를 시도해보십시오. -mysql-innodb-insert-performance-optimization) 일부 최적화 팁을 제공합니다. – hynner

+0

예, MYISAM을 사용하고 있지만 최적화를 시도 할 것입니다. 내가 pdo를 원했던 이유는 bc 테이블이 16000 개의 행을 가지고 있고 새로운 데이터를 가지고있는 최대 질의 결과가 200 개의 행이기 때문입니다. 즉, 80x14 "또는 20 분 후에 전체 테이블을 대략 새로 고침 할 수 있습니다.이 문서를 기반으로 pdo를 선택했습니다. http://www.ilia.ws/files/quebec_PDO.pdf – Pavel