2013-07-21 3 views
-1

PDO와 foreach 루프를 사용하여 MySQL 데이터베이스에 일부 값을 삽입하려고합니다. 내가 그것을 할 때, 그것은 단지 하나의 결과에 넣는다. PDO를 foreach()와 함께 사용

$config['db'] = array(
'host' => 'localhost', 
'username' => 'root', 
'password' => '*NOT NEEDED*', 
'dbname' => 'demoScript' 
); 
$db = new PDO('mysql:host='.$config['db']['host'].'; dbname='.$config['db']['dbname'], $config['db']['username'], $config['db']['password']); 
$url = 'https://gdata.youtube.com/feeds/api/users/demoScript/uploads'; 
$xml = simplexml_load_file($url); 
foreach($xml->entry as $entry){ 
    $title = $entry->title; 
    $db->query("INSERT INTO videos VALUES('*','".$title."','*','*','*','*','*')"); 
} 

*

예를 들어 제외

누구나 작동 코드 예제를 가지고 :

여기 내 코드입니다. 어쩌면 누군가가 뭔가를 누락 있는지 확인하기 위해 XML 파일을 볼 수 있었다

편집 : 여기 내 DB가되도록

Click for DB Schema

+0

루핑이 제대로 작동합니다! 어쩌면 당신은 삽입 할 때 유일한 가치 문제점으로 달리고있다. 데이터베이스 스키마를 보여줄 수 있습니까? – tlenss

+0

고유 인덱스가 없습니까? – tlenss

+0

@tlenss 편집 부분의 링크를 클릭하면 DB가 어떻게 설정되어 있는지 확인할 수 있습니다. –

답변

1

변경과 같은 코드를 설정하는 방법을 당신 쿼리를 에코 할 수 있으며 또한 쿼리 당 하나의 레코드를 추가하는 것보다 하나의 쿼리에 대량 레코드를 추가하는 것이 더 낫습니다.

$query = "INSERT INTO videos VALUES "; 
foreach($xml->entry as $entry){ 
    $title = $entry->title; 
    $values[] ="('*','".$title."','*','*','*','*','*')"; 
} 
$query = $query.implode(",", $values); 
//echo $query 
$db->query($query); 
+0

코드를 너무 오랫동안 보신 후 (미안하지만) 코드 오류라고 생각하지 않습니다. 코드를 실행 한 다음 DB를 확인했습니다. 결과가 없습니다. 페이지에 에코 된 쿼리를 복사하여 수동으로 DB에 붙여 넣었습니다. 데이터베이스로 '전송'되는 동안 오류가 발생 했어야합니다. –

관련 문제