我更改了代码,以便我可以直接插入数据库。现在我遇到代码行$database->bindParam(':name', $name[0][$i]);
的问题。这给了我错误Fatal error: Call to undefined method PDO::bindParam()
我该如何解决这个问题?
$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();
}
}
答案 0 :(得分:1)
首先获取内容:
$content = file_get_contents('filename');
获取每一行:
$line = explode('\n', $contents);
现在你有一个数组中的每一行;循环遍历每个,在逗号上再次爆炸并插入到DB
$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++;
}
答案 1 :(得分:1)
我会让数据库有一个自动递增的主键,所以你不必担心它,但如果不可能只是把它放在for循环中:
$array = explode("\n",file_get_contents("file.txt"));
foreach($array as $count => $line) {
$array[$count] = str_replace('xxx',$count+1,$line);
}