質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

386閲覧

クローリングの勉強中です。PDOが難しいです

Yashichi847

総合スコア15

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/06/04 12:03

前提・実現したいこと

クローリングの勉強中です
$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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

とりあえず

$stmt=$this->pdo->prepare(

"INSERT IGNORE INTO rikunavi_url(url_list) VALUES :str_url" );

で与えてるラベルが「:str_url」なのに対して

$stmt->bindParam(':url_list', $url, PDO::PARAM_STR);

バインドするパラメータ名が「:url_list」

投稿2018/06/04 12:12

yambejp

総合スコア114775

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/06/04 12:16

その前にも重大なシンタックスエラーがw
Yashichi847

2018/06/04 12:52

ありがとうございます。 なんか思い込みの部分が多かったです。 シンタックスエラーの方はすぐに分かりそうです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問