2011-12-19 5 views
0

Я изменил код, чтобы я мог вставлять непосредственно в базу данных. Теперь я столкнулся с проблемой с строкой кода $database->bindParam(':name', $name[0][$i]);. Который дает мне ошибку Fatal error: Call to undefined method PDO::bindParam() Как я могу это исправить?вставить данные в базу данных с подготовленными операциями pdo

$hostname = 'XXX'; 
$database = 'XXX'; 
$username = 'XXX'; 
$password = 'XXX'; 
$database = new PDO("mysql:host=$hostname;dbname=$database", $username, $password); 

function get_data($url) 
{ 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 

$html = get_data($_GET['url']); 
preg_match_all('/\<font face\=\"Arial\"\>\<strong\>(.*)\<br\>\<font color/', $html, $name); 
preg_match('/\<strong\>([A-Z\s0-9]+) BIRTHDAYS\<\/strong\>/', $html, $date); 

for ($i=0, $n=count($name[1]); $i<$n; ++$i) {  
     try { 
      $insert = $database->prepare("INSERT INTO bday (name, birthdate) VALUES (:name, :date)"); 

      $database->bindParam(':name', $name[0][$i]); 
      $database->bindParam(':date', $date[1]); 

      $insert->execute(); 
     } 

     catch (PDOException $e) { 
      echo $e->getMessage(); 
     } 
} 
+2

простая вставка с первичным ключом автоматического приращения, то дб позаботится об остальном –

ответ

1

Первая выборка содержание:

$content = file_get_contents('filename'); 

Получить каждую строку:

$line = explode('\n', $contents); 

Теперь у вас есть каждая строка в массиве; Переберите каждый, взорвать его снова на запятую и вставить в БД

$ct = count($arr); 
while($i < $ct) 
{ 
    $arr = explode(',', $line[$i]); 
    /* Insert into database value $i, $arr[1], $arr[2], just ignore $arr[0] which contains your original string */ 
    $i++; 
} 
+0

данные фактически в текстовом файле не в базе данных еще – bammab

+0

@bammab См правку , – check123

+0

спасибо, что я изменил код, чтобы добавить непосредственно в базу данных, можете ли вы взглянуть на него сейчас? – bammab

1

Я хотел бы сделать базу данных первичного ключа, который приросты авто, поэтому вам не придется беспокоиться об этом, но если это невозможно просто бросить его в цикле:

$array = explode("\n",file_get_contents("file.txt")); 
foreach($array as $count => $line) { 
    $array[$count] = str_replace('xxx',$count+1,$line); 
} 
+0

Я сделал изменения, вы можете взглянуть сейчас. Спасибо – bammab

Смежные вопросы