PHPでDOM、WEBスクレイピングなどして、RSSが無いサイトでも、記事の更新情報を取得したいと6月上旬からどりょくしたふりの爺でありました。
とあるレンタルサバに移植。PDO接続でエラー
自サバからレンタルサバですから、MySQL(DB)関係の書き直しは当然でありますので、そのあたりはバッチリ!
さて、と動かしてみると次のようなエラーがでました。
SQLSTATE[HY000] [1045] Access denied for user ''@'x.x.x.x' (using password: NO)error:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line X
1045→パスワードがセットされてない? 自サバでは動いたのに…。いわゆるPCわからない耄碌爺状態です。「さっきまでPCちゃんと動いていた」「わしは何もしとらん」「勝手に止まった」…あれやこれや…。
PDO接続の書き方によってはつながらないこともあるみたいです
自分が書いたPHPのスクリプトで、とあるサイトをスクレイピングし、それをMySQLとWordpressに投げる、というのが大略やりたいことです。
その、最初のところからNGだと…。
エラーが出ているあたりを見ていくと、どうもPDO接続の最初の部分でNGになっているみたいだ~。ということでネット徘徊や手元書籍の斜め読みなどいたしまして、修正を加えました。
なんとか動きました。結局は同じ指示をしているのだろうけど、見え方が違う、というPDO接続の書き方、という印象でありました。
WordpressのDBテーブル名でうっかりミス
「wp_posts」がWordpress記事を置く、MySQLのテーブル名になります。ええ、一般的には…。ところが、WP設置などの時に、わかりやすいように名前を変えてしまって…それに対応した書き直しをしてなかった…。
「wp_」のあとどうしますか~みたいな、あのときの設定に関係するものです。なにもしなければ、たとえば「wp_posts」となりますが、「arere」とかを指定すると、できあがるテーブル名は「wp_arere_posts」などとなる…。
ブラウザを使って他者が実行しないよう「.htaccess」で
「.htaccess」で、今回のスクリプトを配置したディレクトリ(フォルダ)を覗かれたり、webブラウザ経由でPHP稼働されないように設定しました。
課題。閲覧対象となるHTMLソースはさまざま
まだ課題があります。URLの書き方、同じdivの記事でもあえてリンク設定してないのもある、などイロイロなHTMLソースに出会います。
万能なPHPの書き方はできないので、対象サイトを選び(≒目視)ながら、いくつのサイトまで安定してチェック対象にできるか、確認をすすめたいと思います。