前提・実現したいこと
クローリングの勉強中です
$stmt->execute();のエラーを解消したいです
エラーを解消しmysqlにINSERTしたいです
発生している問題・エラーメッセージ
エラーメッセージ Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in 実行しているファイル
該当のソースコード
PHP,javascript,mysql
ソースコード(fuction部分)
public function get_job_list(){
$url='https://next.rikunabi.com';
$html = file_get_contents($url);
$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'utf-8');
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false; // 連続した空白をまとめる
@$dom->loadHTML($html);
$domXPath = new DOMXPath($dom);
//求人一覧のURLを取得(毎回変わるので)
try{
$xpath = '/html/body/div/div/div/div/div/div[@class="rnn-displayTable"]/div[@class="rnn-listViewCell__list"]/div[@class="rnn-listViewCell"]/a[@class="rnn-button rnn-button--usual"]/@href';
$xpath_record = $domXPath->evaluate($xpath);
if (is_string($xpath_record)){
$result = $xpath_record;
} else {
foreach ($xpath_record as $node){
$result = $url.$node->textContent;
}
}
} catch(Exception $e){
echo '捕捉した例外: ', $e->getMessage(), "\n";
}
$url2 = $result; //求人一覧URLを次の読み込みURLにする
$html2 = file_get_contents($url2);
$html2 = mb_convert_encoding($html2, 'HTML-ENTITIES', 'utf-8');
$dom2 = new DOMDocument();
$dom2->preserveWhiteSpace = false; // 連続した空白をまとめる
@$dom2->loadHTML($html2);
$domXPath2 = new DOMXPath($dom2);
// //新着と新着以外はdiv数などが違うので別々に取得する // //求人一覧URLから求人リンク先一覧を作る(新着) try{ $xpath2 = '/html/body/div/div/div/div/div/div/div/dl/dd/a/@href'; $xpath_record2 = $domXPath2->evaluate($xpath2); if (is_string($xpath_record2)){ $result2[] = $xpath_record2; } else { foreach ($xpath_record2 as $node2){ $result2[] = $url2.$node2->textContent; } } } catch(Exception $e){ echo '捕捉した例外: ', $e->getMessage(), "\n"; } $cnt2 = count($result2); for($i2=0;$i2<$cnt2;$i2++){ if($result2[$i2] != null){ $this->insert_url($result2[$i2]); } } } public function insert_url($url){ $str_url = "(`".$url."`)"; $stmt=$this->pdo->prepare( "INSERT IGNORE INTO `rikunavi_url`(`url_list`) VALUES :str_url" );
// var_dump($stmt);
// var_dump($str_url);
$stmt->bindParam(':url_list', $url, PDO::PARAM_STR);
$stmt->execute();
}
試したこと
INSERT文をいじったり、executeのカッコ内をいじったり、bindParamをいじったり
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/06/04 12:16
2018/06/04 12:52