<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>php | Web活メモ帳</title>
	<atom:link href="https://blog.verygoodtown.com/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.verygoodtown.com</link>
	<description>WEB開発者が使える世界の情報を発信します</description>
	<lastBuildDate>Sat, 07 May 2016 13:56:13 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.9.10</generator>
<site xmlns="com-wordpress:feed-additions:1">122803348</site>	<item>
		<title>PHPで土日祝の一覧を出す方法</title>
		<link>https://blog.verygoodtown.com/2016/05/php-week-list/</link>
					<comments>https://blog.verygoodtown.com/2016/05/php-week-list/#respond</comments>
		
		<dc:creator><![CDATA[linja]]></dc:creator>
		<pubDate>Fri, 06 May 2016 01:00:47 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=9705</guid>

					<description><![CDATA[<p>PHPで土日祝の一覧を設定するプログラムを作成したので自分用にメモです。 最後にコードを載せています。ご参考にどうぞ。 祝日取得用class こちらを参考にいたしました。 祝日を自動判定するDateTime拡張クラス h [&#8230;]</p>
The post <a href="https://blog.verygoodtown.com/2016/05/php-week-list/">PHPで土日祝の一覧を出す方法</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></description>
										<content:encoded><![CDATA[<p>PHPで土日祝の一覧を設定するプログラムを作成したので自分用にメモです。</p>
<p>最後にコードを載せています。ご参考にどうぞ。</p>
<p><span id="more-9705"></span></p>
<h3>祝日取得用class</h3>
<p>こちらを参考にいたしました。</p>
<p>祝日を自動判定するDateTime拡張クラス<br />
<a href="http://qiita.com/chiyoyo/items/539dc2840a1b70a8e2c3" target="_blank">http://qiita.com/chiyoyo/items/539dc2840a1b70a8e2c3</a></p>
<p>以下のようにすると、祝日かどうか判定してくれます。</p>
<pre class="brush:php">
$holiday_datetime = new HolidayDateTime("2016-01-02");
$holiday_datetime->holiday();
</pre>
<h3>実装コード</h3>
<p>コピペだけで使用できるようになっています。<br />
不明点あればコメントで質問ください。</p>
<pre class="brush:php">

$weekday = array(
	"日",
	"月",
	"火",
	"水",
	"木",
	"金",
	"土"
);

// 2016年から3年分取得

for ($now_year = 2016; $now_year <= 2018; $now_year++)
	{
	for ($now_month = 1; $now_month <= 12; $now_month++)
		{
		$countdate = date('t', strtotime("{$now_year}/{$now_month}/1"));
		for ($day = 1; $day <= $countdate; $day++)
			{ //今月の日数分ループする
			$w = date("w", mktime(0, 0, 0, $now_month, $day, $now_year));
			$month = sprintf('%02d', $now_month);
			$day = sprintf('%02d', $day);
			$datetime = new HolidayDateTime("{$now_year}-{$month}-{$day}");
			$holiday = $datetime->holiday();
			if ($holiday)
				{
				echo "'{$now_year}-{$month}-{$day}', //{$holiday}\n";
				}
			  else
				{
				switch ($w)
					{
				case 0: //日曜日
				case 6: //土曜日
					echo "'{$now_year}-{$month}-{$day}', //{$weekday[$w]}\n";
					break;

				default:
					break;
					}
				}
			}
		}
	}

</pre>
<h3>出力結果</h3>
<p>このように出力されます。<br />
配列などにそのままお使いください。</p>
<pre class="code">
'2016-01-11', //成人の日
'2016-01-16', //土
'2016-01-17', //日
'2016-01-23', //土
'2016-01-24', //日
'2016-01-30', //土
'2016-01-31', //日
'2016-02-06', //土
'2016-02-07', //日
'2016-02-11', //建国記念の日
</pre>
<p>以上、PHPで土日祝の一覧を出す方法でした。</p>The post <a href="https://blog.verygoodtown.com/2016/05/php-week-list/">PHPで土日祝の一覧を出す方法</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.verygoodtown.com/2016/05/php-week-list/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">9705</post-id>	</item>
		<item>
		<title>[php]proxy経由でfile_get_contentsを使用する方法</title>
		<link>https://blog.verygoodtown.com/2016/03/proxy-file_get_contents/</link>
					<comments>https://blog.verygoodtown.com/2016/03/proxy-file_get_contents/#respond</comments>
		
		<dc:creator><![CDATA[linja]]></dc:creator>
		<pubDate>Wed, 09 Mar 2016 01:00:51 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=9666</guid>

					<description><![CDATA[<p>プロキシ経由でfile_get_contentsするサンプルコードをご紹介。 $url = "https://blog.verygoodtown.com/"; $proxy = array( "http" => arra [&#8230;]</p>
The post <a href="https://blog.verygoodtown.com/2016/03/proxy-file_get_contents/">[php]proxy経由でfile_get_contentsを使用する方法</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></description>
										<content:encoded><![CDATA[<p>プロキシ経由でfile_get_contentsするサンプルコードをご紹介。</p>
<pre class="brush:php">
$url = "https://blog.verygoodtown.com/";

$proxy = array(
      "http" => array(
         "proxy" => "tcp://プロキシHOST:ポート",
         'request_fulluri' => true,
      ),
);

$proxy_context = stream_context_create($proxy);
echo file_get_contents($url,false,$proxy_context);
</pre>
<p>1時間はまってましたorz</p>The post <a href="https://blog.verygoodtown.com/2016/03/proxy-file_get_contents/">[php]proxy経由でfile_get_contentsを使用する方法</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.verygoodtown.com/2016/03/proxy-file_get_contents/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">9666</post-id>	</item>
		<item>
		<title>PHPスクリプトが実行可能な時間を調べる方法</title>
		<link>https://blog.verygoodtown.com/2016/03/php-script-max-execution-time/</link>
					<comments>https://blog.verygoodtown.com/2016/03/php-script-max-execution-time/#respond</comments>
		
		<dc:creator><![CDATA[linja]]></dc:creator>
		<pubDate>Mon, 07 Mar 2016 00:48:29 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=9624</guid>

					<description><![CDATA[<p>PHPスクリプトが実行可能な時間を調べる必要があったので自分用にメモです。 max_execution_timeを確認する PHPスクリプトが実行可能な時間は、phpinfoで確認が出来ます。 max_execution [&#8230;]</p>
The post <a href="https://blog.verygoodtown.com/2016/03/php-script-max-execution-time/">PHPスクリプトが実行可能な時間を調べる方法</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></description>
										<content:encoded><![CDATA[<p>PHPスクリプトが実行可能な時間を調べる必要があったので自分用にメモです。</p>
<p><span id="more-9624"></span></p>
<h3>max_execution_timeを確認する</h3>
<p>PHPスクリプトが実行可能な時間は、phpinfoで確認が出来ます。</p>
<p>max_execution_timeという項目が、実行可能時間です。</p>
<p><img loading="lazy" src="https://blog.verygoodtown.com/wordpress/wp-content/uploads/2016/03/20160307-01-600x19.jpg" alt="20160307-01" width="600" height="19" class="alignnone size-large wp-image-9629" srcset="https://blog.verygoodtown.com/wordpress/wp-content/uploads/2016/03/20160307-01-600x19.jpg 600w, https://blog.verygoodtown.com/wordpress/wp-content/uploads/2016/03/20160307-01-300x9.jpg 300w, https://blog.verygoodtown.com/wordpress/wp-content/uploads/2016/03/20160307-01.jpg 676w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>この時間を超えるとスクリプトは強制的に終了しますので、長時間の処理を実行するには注意が必要です。</p>
<h3>制限時間を越えた場合</h3>
<p>制限時間を越えた場合はエラーが表示されます。</p>
<pre class="code">
Fatal error: Maximum execution time of 30 seconds exceeded in [ファイル名] on line 15
</pre>
<h3>制限時間を変更する方法</h3>
<p>この制限はset_time_limit()によって、実行可能な秒数を設定することで回避できます。</p>
<p>以下のコードを設定することで制限時間が変更になります。なお、ゼロ秒とすると時間の制限はなくなります。</p>
<pre class="brush:php;">
void set_time_limit ( int $seconds )
</pre>The post <a href="https://blog.verygoodtown.com/2016/03/php-script-max-execution-time/">PHPスクリプトが実行可能な時間を調べる方法</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.verygoodtown.com/2016/03/php-script-max-execution-time/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">9624</post-id>	</item>
		<item>
		<title>Mac OS X el captionにcakePHP3をインストールする際にハマったのでやり方をメモ</title>
		<link>https://blog.verygoodtown.com/2015/11/mac-os-x-el-caption-cakephp3/</link>
					<comments>https://blog.verygoodtown.com/2015/11/mac-os-x-el-caption-cakephp3/#respond</comments>
		
		<dc:creator><![CDATA[linja]]></dc:creator>
		<pubDate>Mon, 30 Nov 2015 03:47:35 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=9570</guid>

					<description><![CDATA[<p>Cakephp3をインストールするのにハマったのでメモ。 まずは公式サイトのブログチュートリアルに記載がある通りインストールを開始します。 Blog Tutorial $ curl -s https://getcompo [&#8230;]</p>
The post <a href="https://blog.verygoodtown.com/2015/11/mac-os-x-el-caption-cakephp3/">Mac OS X el captionにcakePHP3をインストールする際にハマったのでやり方をメモ</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></description>
										<content:encoded><![CDATA[<p>Cakephp3をインストールするのにハマったのでメモ。</p>
<p><span id="more-9570"></span></p>
<p>まずは公式サイトのブログチュートリアルに記載がある通りインストールを開始します。</p>
<p><a href="http://book.cakephp.org/3.0/en/tutorials-and-examples/blog/blog.html" target="_blank">Blog Tutorial</a></p>
<pre class='code'>
$ curl -s https://getcomposer.org/installer | php
</pre>
<p>その後プロジェクト作成</p>
<pre class='code'>
$ composer create-project --prefer-dist cakephp/app [プロジェクト名]
</pre>
<p>するとここでエラー発生</p>
<pre class='code'>
Your requirements could not be resolved to an installable set of packages.

Problem 1
 - cakephp/cakephp 3.0.x-dev reqyures ext-intl * -> the requested PHP extention intl is missing from your system.
</pre>
<p>intl がないと言われる。<br />
ここでintlのインストールにハマった。<br />
最終的に対応した方法は以下。</p>
<h3>必要環境</h3>
<p>1.<a href="http://qiita.com/_daisuke/items/d3b2477d15ed2611a058" target="_blank">Homebrew</a><br />
2.PECL<br />
3.ターミナル</p>
<h3>HomebrewでICUをインストール</h3>
<p>まずbrewをアップデート</p>
<pre class='code'>
$ brew update
</pre>
<p>icu4cをインストール</p>
<pre class='code'>
$ brew install icu4c
</pre>
<h3>PECLでintlをインストール</h3>
<pre class='code'>
$ sudo pecl update-channels
</pre>
<pre class='code'>
$ sudo pecl install intl
</pre>
<p>ここでエラー発生</p>
<pre class='code'>
configure: error: Unable to detect ICU prefix or ./bin/icu-config failed. Please verify ICU install prefix and make sure icu-config works.
</pre>
<p>icu4cをインストールが必要と言われるのでbrewでインストール</p>
<pre class='code'>
brew install icu4c
brew link icu4c --force
</pre>
<p>これでインストール完了。<br />
intlがインストールされているか確認する</p>
<pre class='code'>
$ php -m | grep intl
intl
</pre>
<p>あった！<br />
後はphp.iniにintlを追加して完了<br />
今回は以下のように記載</p>
<pre class='code'>
extension=intl.so
</pre>
<p>再度プロジェクトを作成</p>
<pre class='code'>
php composer.phar create-project --prefer-dist cakephp/app [プロジェクト名]
</pre>
<p>出来た！！！</p>
<p>一日ハマったよ。。。</p>
<p>こちらのサイトを参考にさせていただきました。感謝</p>
<p><a href="http://budiirawan.com/install-php-intl-extension-os-x/" target="_blank">How to Install PHP intl extension on OS X</a></p>The post <a href="https://blog.verygoodtown.com/2015/11/mac-os-x-el-caption-cakephp3/">Mac OS X el captionにcakePHP3をインストールする際にハマったのでやり方をメモ</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.verygoodtown.com/2015/11/mac-os-x-el-caption-cakephp3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">9570</post-id>	</item>
		<item>
		<title>PHPで入力チェックを行う方法</title>
		<link>https://blog.verygoodtown.com/2015/11/php-validate-2015/</link>
					<comments>https://blog.verygoodtown.com/2015/11/php-validate-2015/#respond</comments>
		
		<dc:creator><![CDATA[linja]]></dc:creator>
		<pubDate>Wed, 11 Nov 2015 01:00:25 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=9546</guid>

					<description><![CDATA[<p>PHPで入力チェックを行う方法をまとめた方がいらっしゃったので、ブログでもシェア。 PHPで各種バリデーション URLチェック function is_valid_url($url) { return filter_va [&#8230;]</p>
The post <a href="https://blog.verygoodtown.com/2015/11/php-validate-2015/">PHPで入力チェックを行う方法</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></description>
										<content:encoded><![CDATA[<p>PHPで入力チェックを行う方法をまとめた方がいらっしゃったので、ブログでもシェア。</p>
<p><span id="more-9546"></span></p>
<p><a href="http://qiita.com/mpyw/items/346f1789ad0e1b969ebc" target="_blank">PHPで各種バリデーション</a></p>
<h3>URLチェック</h3>
<pre class='brush:php'>
function is_valid_url($url) {
    return filter_var($url, FILTER_VALIDATE_URL) && preg_match('@^https?+://@i', $url);
}
</pre>
<h3>Eメールアドレスチェック</h3>
<pre class='brush:php'>
function is_valid_email($email, $check_dns = false) {
    switch (true) {
        case !filter_var($email, FILTER_VALIDATE_EMAIL):
        case !preg_match('/@([\w.-]++)\z/', $email, $m):
            return false;
        case !$check_dns:
        case checkdnsrr($m[1], 'MX'):
        case checkdnsrr($m[1], 'A'):
        case checkdnsrr($m[1], 'AAAA'):
            return true;
        default:
            return false;
    }
}
</pre>
<h3>電話番号チェック</h3>
<pre class='brush:php'>
function is_valid_phone_number($number) {
    return is_string($number) && preg_match('/\A\d{2,4}+-\d{2,4}+-\d{4}\z/', $number);
}
</pre>
<p>詳しい解説はサイトをごらんください。<br />
<a href="http://qiita.com/mpyw/items/346f1789ad0e1b969ebc" target="_blank">PHPで各種バリデーション</a></p>The post <a href="https://blog.verygoodtown.com/2015/11/php-validate-2015/">PHPで入力チェックを行う方法</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.verygoodtown.com/2015/11/php-validate-2015/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">9546</post-id>	</item>
		<item>
		<title>PHPでドメインが存在するかどうかチェックする方法</title>
		<link>https://blog.verygoodtown.com/2015/11/php-domain-check/</link>
					<comments>https://blog.verygoodtown.com/2015/11/php-domain-check/#respond</comments>
		
		<dc:creator><![CDATA[linja]]></dc:creator>
		<pubDate>Fri, 06 Nov 2015 02:51:07 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=9509</guid>

					<description><![CDATA[<p>PHPでドメインが存在するかどうかチェックする方法は無いか？と聞かれたので自分用にメモです ドメイン名からホスト名を検索し、IPアドレス形式が正しければ存在するというチェックにしています。 ソースコード $url = ' [&#8230;]</p>
The post <a href="https://blog.verygoodtown.com/2015/11/php-domain-check/">PHPでドメインが存在するかどうかチェックする方法</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></description>
										<content:encoded><![CDATA[<p>PHPでドメインが存在するかどうかチェックする方法は無いか？と聞かれたので自分用にメモです</p>
<p>ドメイン名からホスト名を検索し、IPアドレス形式が正しければ存在するというチェックにしています。</p>
<p><span id="more-9509"></span></p>
<h3>ソースコード</h3>
<pre class="brush:php;">
$url = 'http://www.example.com/';

$array = parse_url($url);

if ($array && $array['host']) {
    $ip = gethostbyname($array['host']);
    $long = ip2long($ip);
   
    if ($long === false || $ip !== long2ip($long)) {
        echo '名前解決が出来ないため、存在しないドメイン';
    } else {
        echo 'OK!存在するドメインです';
    }
} else {
    echo 'URLの値が正しくありません';
}
</pre>
<p>以下のサイトを参考にさせていただきました。感謝<br />
<a href="http://fdays.blogspot.jp/2011/03/php-url.html" target="_blank">http://fdays.blogspot.jp/2011/03/php-url.html</a></p>The post <a href="https://blog.verygoodtown.com/2015/11/php-domain-check/">PHPでドメインが存在するかどうかチェックする方法</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.verygoodtown.com/2015/11/php-domain-check/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">9509</post-id>	</item>
		<item>
		<title>.htaccessでPHPのエラーを表示させる方法</title>
		<link>https://blog.verygoodtown.com/2015/09/php-error-htaccess/</link>
					<comments>https://blog.verygoodtown.com/2015/09/php-error-htaccess/#respond</comments>
		
		<dc:creator><![CDATA[linja]]></dc:creator>
		<pubDate>Mon, 21 Sep 2015 01:37:10 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=9447</guid>

					<description><![CDATA[<p>.htaccessでPHPのエラーを表示させる方法です。 以下の記述をするだけでOKです! php_flag display_errors On</p>
The post <a href="https://blog.verygoodtown.com/2015/09/php-error-htaccess/">.htaccessでPHPのエラーを表示させる方法</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></description>
										<content:encoded><![CDATA[<p>.htaccessでPHPのエラーを表示させる方法です。</p>
<p>以下の記述をするだけでOKです!<span id="more-9447"></span></p>
<pre class='code'>
php_flag  display_errors On
</pre>The post <a href="https://blog.verygoodtown.com/2015/09/php-error-htaccess/">.htaccessでPHPのエラーを表示させる方法</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.verygoodtown.com/2015/09/php-error-htaccess/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">9447</post-id>	</item>
		<item>
		<title>PHPでプレースホルダを使ってSQLを発行する方法〜PDOの使い方</title>
		<link>https://blog.verygoodtown.com/2014/04/php-mysql-pdo-placeholder/</link>
					<comments>https://blog.verygoodtown.com/2014/04/php-mysql-pdo-placeholder/#respond</comments>
		
		<dc:creator><![CDATA[linja]]></dc:creator>
		<pubDate>Thu, 17 Apr 2014 01:00:05 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=9054</guid>

					<description><![CDATA[<p>本日PHPでプレースホルダ（SQLを発行する際に後から値を指定する方法）のやり方を聞かれたのでブログでもシェア。 PHPではPDOを使う事で簡単にプレースホルダが使えるようになりますよ。 以下のサイトを参考にさせていただ [&#8230;]</p>
The post <a href="https://blog.verygoodtown.com/2014/04/php-mysql-pdo-placeholder/">PHPでプレースホルダを使ってSQLを発行する方法〜PDOの使い方</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" src="https://blog.verygoodtown.com/wordpress/wp-content/uploads/2014/04/20140411-10.png" alt="20140411-10" width="75" height="39" class="alignnone size-full wp-image-9057" /></p>
<p>本日PHPでプレースホルダ（SQLを発行する際に後から値を指定する方法）のやり方を聞かれたのでブログでもシェア。</p>
<p>PHPではPDOを使う事で簡単にプレースホルダが使えるようになりますよ。</p>
<p><span id="more-9054"></span></p>
<blockquote><p>
以下のサイトを参考にさせていただきました。感謝！<br />
<a href="http://qiita.com/tabo_purify/items/d1166236f3b03c7be60d" target="_blank">PDOで接続、SELECT、プリペアドステートメントとは（PHPでMySQLに接続）</a><br />
<a href="http://qiita.com/tabo_purify/items/2575a58c54e43cd59630" target="_blank">PHPでPDOを使ってMySQLに接続、INSERT、UPDATE、DELETE、COUNT、SUM &#8211; Qiita</a>
</p></blockquote>
<h3>プレースホルダとは</h3>
<p>実際にプレースホルダを使った例を見てみましょう</p>
<pre class="brush:php">
$sth = $dbh->prepare('SELECT name, color, calories FROM fruit WHERE calories < ? AND color = ?');
$sth->execute(array(150, 'red'));
</pre>
<p>この「<strong>?（ハテナ）</strong>」記号がプレースホルダです。<br />
この例では、calories（カロリー）が150より低く、color(色)が赤のフルーツを探しています。<br />
後から値を指定する事でソースコードを見やすくする事が出来るのと、SQLインジェクションなども防ぐ事が出来ます。</p>
<h3>PDOとは</h3>
<p>PDOは「PHP Data Objects」の頭文字をとった名称です。<br />
<strong>データベースが変わったとしても、ソースコードレベルでの変更点は出さないようにする</strong>データアクセス抽象化レイヤの一つです。</p>
<h3>MySQLに接続する方法</h3>
<p>PDOでMySQLに接続してみます。</p>
<pre class="brush:php">
try {
  $dbh = new PDO('mysql:dbname=[dbname];host=[hostname]', '[username]', '[password]');
} catch (PDOException $e) {
  exit('データベースに接続できませんでした。' . $e->getMessage());
}
</pre>
<h3>SELECT文を発行する方法</h3>
<pre class="brush:php">
$stmt = $dbh->query('SELECT id,title FROM [table] WHERE calories <= 150');
if (!$stmt) {
  $info = $dbh->errorInfo();
  exit($info[2]);
}

while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {
  echo '<p>' . $data['id'] . ':' . $data['title'] . "</p>\n";
}
</pre>
<h3>INSERTをする方法</h3>
<p>プリペアドステートメントで挿入するとSQLインジェクション対策にもなります。</p>
<pre class="brush:php">
$sql = "INSERT INTO [table] (id,title,body,created) VALUES(?,?,?,?)";
$stmt=$dbh->prepare($sql);
$res=$stmt->execute(array($no,$name,$text,$datetime));
if ($res) {
    echo "登録完了";
}
else {
    echo "登録失敗";
}
</pre>
<h3>UPDATEをする方法</h3>
<pre class="brush:php">
$stmt = $dbh->prepare("UPDATE [table] SET no =(no+1) WHERE name = :name");
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':name', $name, PDO::PARAM_STR);
$res = $stmt->execute();
if ($res) {
     echo "更新完了";
 }
else {
    echo "更新失敗";
}
</pre>
<h3>DELETEをする方法</h3>
<pre class="brush:php">
$stmt = $dbh->prepare("DELETE FROM [table] where id = :delete_id");
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':delete_id', $id, PDO::PARAM_STR);
$res = $stmt->execute();
if ($res) {
     echo "削除完了";
 }
else {
    echo "削除出来ませんでした";
}
</pre>
<h3>使用上の注意</h3>
<p>PDOを使ってもプレースホルダを使わない場合、SQLインジェクションに繋がる場合があるようです。</p>
<blockquote><p>
<a href="http://blog.tokumaru.org/2013/12/pdo-and-mysql-allow-multiple-statements.html" target="_blank">PHP+PDO+MySQLの組み合わせではSQLインジェクション攻撃で複文呼び出しが可能</a></p>
<p>対策として<br />
・原則として文字列連結でSQL文を組み立てない<br />
・パラメータはプレースホルダにより指定する<br />
・特別な事情がなければ静的プレースホルダを使う。元々その方が安全だが、・PDO::setAttribute(PDO::ATTR_EMULATE_PREPARES, false);により複文の実行も予防できる<br />
・詳しくはIPAの「安全なSQLの呼び出し方」を読む</p>
</blockquote>
<p>セキュリティには注意しながら使いたいですね。<br />
以上、PHPでプレースホルダを使ってSQLを発行する方法〜PDOの使い方でした。</p>The post <a href="https://blog.verygoodtown.com/2014/04/php-mysql-pdo-placeholder/">PHPでプレースホルダを使ってSQLを発行する方法〜PDOの使い方</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.verygoodtown.com/2014/04/php-mysql-pdo-placeholder/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">9054</post-id>	</item>
		<item>
		<title>PHPとMySQLで作るシンプルなログインスクリプト</title>
		<link>https://blog.verygoodtown.com/2013/08/php-login-script/</link>
					<comments>https://blog.verygoodtown.com/2013/08/php-login-script/#respond</comments>
		
		<dc:creator><![CDATA[linja]]></dc:creator>
		<pubDate>Thu, 29 Aug 2013 05:58:12 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=8737</guid>

					<description><![CDATA[<p>PHPとMySQLで作るシンプルなログインスクリプトがオープンソースで公開されていたのでご紹介。 １ファイルで完結するタイプから、MVCモデルを独自に構築したスクリプトまで４種類のログインスクリプトがダウンロード出来るよ [&#8230;]</p>
The post <a href="https://blog.verygoodtown.com/2013/08/php-login-script/">PHPとMySQLで作るシンプルなログインスクリプト</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" src="https://blog.verygoodtown.com/wordpress/wp-content/uploads/2013/08/20130829-05.png" alt="20130829 05" title="20130829-05.png" border="0" width="507" height="256" /></p>
<p>PHPとMySQLで作るシンプルなログインスクリプトがオープンソースで公開されていたのでご紹介。</p>
<p><span id="more-8737"></span></p>
<p>１ファイルで完結するタイプから、MVCモデルを独自に構築したスクリプトまで４種類のログインスクリプトがダウンロード出来るようになっています。</p>
<p>これからPHPでログイン処理を学びたい方にいかがでしょうか。</p>
<p>ダウンロードは下のリンクからどうぞ<br />
<a href="http://www.php-login.net/" target="_blank">A PHP Login Script</a></p>The post <a href="https://blog.verygoodtown.com/2013/08/php-login-script/">PHPとMySQLで作るシンプルなログインスクリプト</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.verygoodtown.com/2013/08/php-login-script/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8737</post-id>	</item>
		<item>
		<title>PHPでTrackbackを処理するPEAR::Services_Trackbackの使い方</title>
		<link>https://blog.verygoodtown.com/2012/12/php-pear-services-trackback/</link>
					<comments>https://blog.verygoodtown.com/2012/12/php-pear-services-trackback/#respond</comments>
		
		<dc:creator><![CDATA[linja]]></dc:creator>
		<pubDate>Wed, 12 Dec 2012 01:25:35 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=8375</guid>

					<description><![CDATA[<p>PHPでTrackbackを処理する際に使えるPEARモジュール Services_Trackbackの使い方を調べる必要が合ったので、 ブログにもエントリーです。 トラックバックの送受信を簡単に出来るライブラリになりま [&#8230;]</p>
The post <a href="https://blog.verygoodtown.com/2012/12/php-pear-services-trackback/">PHPでTrackbackを処理するPEAR::Services_Trackbackの使い方</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" src="https://blog.verygoodtown.com/wordpress/wp-content/uploads/2012/12/20121207-01.png" alt="" title="20121207-01" width="499" height="287" class="alignnone size-full wp-image-8378" srcset="https://blog.verygoodtown.com/wordpress/wp-content/uploads/2012/12/20121207-01.png 499w, https://blog.verygoodtown.com/wordpress/wp-content/uploads/2012/12/20121207-01-300x172.png 300w" sizes="(max-width: 499px) 100vw, 499px" /></p>
<p>PHPでTrackbackを処理する際に使えるPEARモジュール<br />
Services_Trackbackの使い方を調べる必要が合ったので、<br />
ブログにもエントリーです。</p>
<p>トラックバックの送受信を簡単に出来るライブラリになります。</p>
<h3>インストール</h3>
<p>以下のコマンドを実行します</p>
<pre class="code">
pear install Services_Trackback
</pre>
<p>インストールしたら早速使って見ましょう</p>
<p><span id="more-8375"></span></p>
<h3>トラックバックを送信する</h3>
<p>以下のコードを実行します。</p>
<pre class="brush:php;">
/***************************************
 * PEARを読み込みます。
****************************************/
require_once('Services/Trackback.php');


/***************************************
 * トラックバック送信元のデータを指定します。
****************************************/
$data = array(
'id'	 =>1,　//固定
'title'	 => '記事タイトルを入力します。',  
'excerpt'	=> '概要をここに入力します。', 
'blog_name'	=> 'サイト名を入力します', 

 // トラックバック送信元の記事URL
'url'	 => 'http://example.com/post.php',

// トラックバック送信先
'trackback_url'	=> 'http://othersite.com/post.php' , 

// ホスト名
'host'	 => $_SERVER['REMOTE_ADDR'],	
);



/***************************************
 * トラックバックを送信します。
****************************************/
$tb = Services_Trackback::create($data);
$res = $tb->send($data);
if ($res !== true) {
	
	/***************************************
	 * トラックバックに失敗（送信先Pingサーバーがエラーを返す)した場合の処理です。
	****************************************/
	echo $tb->getResponseError($res->getMessage(), 1);
	echo 'トラックバックに失敗しました。';
	exit();
} else {
	/***************************************
	 * トラックバックに成功した場合の処理です。
	****************************************/
	echo 'トラックバックに成功しました';
}
</pre>
<p>上記のサンプルコードを実行すると、トラックバックが送信されます。</p>
<p>コード内のtitleに記事タイトル、excerptに概要、blog_nameにサイト名、urlに作成した記事のURLを指定します。</p>
<p>trackback_urは送信す先のブログのURLになります。</p>
<p>実際にトラックバックを送信する処理は以下になります。</p>
<pre class="brush:php;">
Services_Trackback::create($data);
$res = $tb->send($data);
</pre>
<h3>トラックバックを受信する</h3>
<p>次にトラックバックを受信してみましょう。</p>
<p>コードは以下になります。</p>
<pre class="brush:php;">
/***************************************
 * PEARを読み込みます。 
****************************************/
require_once 'Services/Trackback.php';

/***************************************
 * パラメータの指定
****************************************/
$data = array_merge(array(
	'id' => 1, 
	'host' => $_SERVER["REMOTE_ADDR"]
	), 
	$_POST);


/***************************************
 * トラックバックを受信します。
****************************************/
$tb = Services_Trackback::create($data);
$res = $tb->receive($data);


if ($res !== true) {
	
	/***************************************
	 * トラックバックに失敗（パラメータが不正)の場合の処理です。
	****************************************/
	echo $tb->getResponseError($res->getMessage(), 1);
	echo '不正なアクセスです。';
	exit();
} else {
	/***************************************
	 * トラックバックに成功した場合の処理です。
     * 受け取ったパラメータをゴニョゴニョします。
	****************************************/
	$data['url'] = $tb->get('url');
	$data['title'] = $tb->get('title');
	$data['blog_name'] = $tb->get('blog_name');
	$data['excerpt'] = $tb->get('excerpt');
	
	/***************************************
	 * トラックバック送信元にメッセージを返します。
	****************************************/
	echo $tb->getResponseSuccess();
}
</pre>
<p>以上、PHPでTrackbackを処理するPEAR::Services_Trackbackの使い方でした</p>The post <a href="https://blog.verygoodtown.com/2012/12/php-pear-services-trackback/">PHPでTrackbackを処理するPEAR::Services_Trackbackの使い方</a> first appeared on <a href="https://blog.verygoodtown.com">Web活メモ帳</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.verygoodtown.com/2012/12/php-pear-services-trackback/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8375</post-id>	</item>
	</channel>
</rss>
