<?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/"
	>

<channel>
	<title>DB &#8211; スグブログ</title>
	<atom:link href="https://sugublog.org/tag/db/feed/" rel="self" type="application/rss+xml" />
	<link>https://sugublog.org</link>
	<description>ブログ運営について発信中</description>
	<lastBuildDate>Tue, 12 Mar 2024 09:17:46 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://sugublog.org/wp-content/uploads/2021/07/icon_20210703-min-150x150.png</url>
	<title>DB &#8211; スグブログ</title>
	<link>https://sugublog.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【PHP基礎】XサーバでPHPのDB操作をWeb公開用に修正する</title>
		<link>https://sugublog.org/php-base-fix-dbaccess-on-xserver/</link>
					<comments>https://sugublog.org/php-base-fix-dbaccess-on-xserver/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Sun, 14 Nov 2021 12:36:52 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[DB]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=4481</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/11/Web_site_1114-1024x575.jpg" class="webfeedsFeaturedVisual" /></p>PHPでWebサイト構築する為に、ローカル環境を作成して色々試しています。 ローカル環境を構築するメリットは、気軽に試せる事にあります。 開発中は何度も試すので、本番環境だと試す度にアップロードをしなければなりません。  [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/11/Web_site_1114-1024x575.jpg" class="webfeedsFeaturedVisual" /></p>
<p>PHPでWebサイト構築する為に、ローカル環境を作成して色々試しています。</p>



<p class="is-style-big_icon_check">ローカル環境を構築するメリットは、気軽に試せる事にあります。</p>



<p>開発中は何度も試すので、本番環境だと試す度にアップロードをしなければなりません。</p>



<p>面倒で時間がかかるので、ローカル環境で行う事は大事になってきます。</p>



<p class="is-style-balloon_box">PHP環境をローカルで作成するには、以下の「パソコン１つでPHP環境を作成する」の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/DB0804-5-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-relation-db-and-css/">【php応用】パソコン1つでphp環境を作成する！DBやCSSまで連携</a>
						<span class="p-blogCard__excerpt">php開発環境を作成したい、という事で、パソコン1つで、ローカル環境にphp環境を構築しました。 データベース連携やCSS連携もしました。 テンプレートにもなるので、コ&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p class="is-style-big_icon_check">しかし実際にWebサイトに上げる場合、DB連携している場合変更しなければいけない項目が出てきます。</p>



<p>今回は変更しなければいけない箇所と、その作成方法をXサーバ用で試してみようと思います。</p>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">XサーバでPHPのDB操作をWeb公開用に修正する</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/11/script_1114-1024x683.jpg" alt="スクリプト" class="wp-image-4504" srcset="https://sugublog.org/wp-content/uploads/2021/11/script_1114-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/script_1114-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/script_1114-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/script_1114.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<h3 class="wp-block-heading">Web公開用に修正する箇所</h3>



<p>ローカル環境はSAMPPで構築しております。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/01/pc17.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/xampp-install/">【初心者向け】XAMPPをインストールして自端末をサーバーにしてみよう。</a>
						<span class="p-blogCard__excerpt">プログラミングの結果を試すのにサーバーが必要だけど、レンタルサーバー借りるの面倒臭いし勿体無い。自端末をサーバーにしてコード試したいな。 そういった人向けです&#8230;</span>					</div>
				</div>
			</div>
		</div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-3-1-300x172.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/phpmyadmin-base/">DBを簡単作成出来るphpmyadminを使用してテーブル操作する</a>
						<span class="p-blogCard__excerpt">phpなどでDB（データベース）を扱う事が多いですが、DBはコマンドで操作する事が多いです。 しかし、コマンドを覚えるのも大変です。GUIで簡単に作成してサイトやサービ&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>その時にDBに接続する構文は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
try{
 $DB_DATABASE = &#39;mydatabase&#39;;
 $DB_USERNAME = &#39;root&#39;;
 $DB_PASSWORD = &#39;&#39;;
 $DB_OPTION = &#39;charset=utf8&#39;;
 $PDO_DSN = &quot;mysql:host=localhost;dbname=&quot; . $DB_DATABASE . &quot;;&quot; . $DB_OPTION;
 $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD,
 [   PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION,
 ]);
 echo &#39;DB接続成功&#39;;
 } catch(PDOException $e){
 echo &#39;DB接続失敗&#39;;
}
?&gt;</code></pre></div>



<p>DB接続すれば「DB接続成功」、例外があれば「DB接続失敗」の文字列を表示する「例外処理」も施しております。</p>



<p class="is-style-balloon_box">詳しくは以下の「PDOでDBにアクセスする時の構文」の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-6-300x204.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-dbaccess/">【php基礎】PDOでDBにアクセスする時の構文とは？例外処理あり</a>
						<span class="p-blogCard__excerpt">phpでDBを使用できると、サービスの幅がとてつもなく広がります。今回はphpでDBと連携をとる時の基礎をやっていきます。 今回行うDBへ連携する時の項目は下記です。 DB&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p class="is-style-balloon_box">ローカル環境からWebにアップする時に変更する箇所は以下です</p>



<ul class="is-style-good_list wp-block-list"><li>データベース名</li><li>ユーザー名とパスワード</li><li>ホスト名</li></ul>



<p>今回はXサーバーで行います。一つずつ作成していきます。</p>



<p>Xサーバーの<a href="https://www.xserver.ne.jp/login_server.php" data-type="URL" data-id="https://www.xserver.ne.jp/login_server.php" target="_blank" rel="noreferrer noopener">管理画面（サーバーパネル）</a>にログインします</p>



<h2 class="wp-block-heading">Xサーバーでデータベースを作成する</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="645" src="https://sugublog.org/wp-content/uploads/2021/11/Server_20211109-7-1024x645.jpg" alt="データベース" class="wp-image-4414" srcset="https://sugublog.org/wp-content/uploads/2021/11/Server_20211109-7-1024x645.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/Server_20211109-7-300x189.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/Server_20211109-7-768x484.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/Server_20211109-7.jpg 1199w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1001" height="892" src="https://sugublog.org/wp-content/uploads/2021/11/1.png" alt="" class="wp-image-4482" srcset="https://sugublog.org/wp-content/uploads/2021/11/1.png 1001w, https://sugublog.org/wp-content/uploads/2021/11/1-300x267.png 300w, https://sugublog.org/wp-content/uploads/2021/11/1-768x684.png 768w" sizes="(max-width: 1001px) 100vw, 1001px" /></figure></div>



<p>「データベース」の中の「MySQL設定」をクリックします。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="999" height="444" src="https://sugublog.org/wp-content/uploads/2021/11/2.png" alt="" class="wp-image-4483" srcset="https://sugublog.org/wp-content/uploads/2021/11/2.png 999w, https://sugublog.org/wp-content/uploads/2021/11/2-300x133.png 300w, https://sugublog.org/wp-content/uploads/2021/11/2-768x341.png 768w" sizes="(max-width: 999px) 100vw, 999px" /></figure></div>



<p>「MySQL追加」タブをクリックし、データベース名を記入して、「確認画面へ進む」をクリックします。</p>



<p class="is-style-icon_pen">文字コードは「UTF-8」のままでOKです。</p>



<p>ここでは「sugublog7_test」というデータベースを作成します。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1000" height="464" src="https://sugublog.org/wp-content/uploads/2021/11/3.png" alt="" class="wp-image-4484" srcset="https://sugublog.org/wp-content/uploads/2021/11/3.png 1000w, https://sugublog.org/wp-content/uploads/2021/11/3-300x139.png 300w, https://sugublog.org/wp-content/uploads/2021/11/3-768x356.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure></div>



<p>作成するデータベース名を確認して「追加する」をクリックします。データベース作成完了です。</p>



<h2 class="wp-block-heading">XサーバーでMySQLユーザとパスワードを作成する</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="682" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-1024x682.jpg" alt="データベース" class="wp-image-4502" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-1024x682.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-768x511.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>「MySQL一覧」タブに今回作成した「sugublog7_test」のデータベースが見えました。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="999" height="798" src="https://sugublog.org/wp-content/uploads/2021/11/4.png" alt="" class="wp-image-4485" srcset="https://sugublog.org/wp-content/uploads/2021/11/4.png 999w, https://sugublog.org/wp-content/uploads/2021/11/4-300x240.png 300w, https://sugublog.org/wp-content/uploads/2021/11/4-768x613.png 768w" sizes="(max-width: 999px) 100vw, 999px" /></figure></div>



<p>アクセス権所有ユーザがいないとなっています。データベースにアクセスするユーザが必要です。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="996" height="506" src="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1-1.png" alt="" class="wp-image-4492" srcset="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1-1.png 996w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1-1-300x152.png 300w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1-1-768x390.png 768w" sizes="(max-width: 996px) 100vw, 996px" /></figure></div>



<p>MySQLのユーザーを作成します。「MySQLユーザ追加」タブにユーザとパスワードを入力します。「確認画面へ進む」をクリックします。今回は以下のようにしました。</p>



<ul class="wp-block-list"><li>ユーザID：「user1」</li><li>パスワード「testuser」</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1001" height="534" src="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-2.png" alt="" class="wp-image-4491" srcset="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-2.png 1001w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-2-300x160.png 300w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-2-768x410.png 768w" sizes="(max-width: 1001px) 100vw, 1001px" /></figure></div>



<p>「MySQLユーザ一覧」タブに作成した「sugublog7_user1」ユーザが見えました。</p>



<h2 class="wp-block-heading">ユーザ作成時気を付ける事</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="444" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7-1024x444.jpg" alt="データベース" class="wp-image-4503" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7-1024x444.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7-300x130.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7-768x333.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<h3 class="wp-block-heading">ユーザ作成時気を付ける事</h3>



<ol class="is-style-num_circle wp-block-list"><li>ユーザIDは半角英数字のみ使用</li><li>ユーザIDは６文字以内にする</li><li>パスワードは半角英数字や利用可能な文字のみ</li><li>パスワードは８文字以上16文字以内</li></ol>



<p>テストしてみます。というかやってエラー出た事をまとめます。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="998" height="468" src="https://sugublog.org/wp-content/uploads/2021/11/user_create_1.png" alt="" class="wp-image-4486" srcset="https://sugublog.org/wp-content/uploads/2021/11/user_create_1.png 998w, https://sugublog.org/wp-content/uploads/2021/11/user_create_1-300x141.png 300w, https://sugublog.org/wp-content/uploads/2021/11/user_create_1-768x360.png 768w" sizes="(max-width: 998px) 100vw, 998px" /></figure></div>



<p>ここでは「sugublog7_test_user」、パスワードも同じものを記入しました。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1000" height="488" src="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-3.png" alt="" class="wp-image-4489" srcset="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-3.png 1000w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-3-300x146.png 300w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-3-768x375.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure></div>



<p>①MySQLユーザは半角英数文字でないとダメです。「_」はダメです。</p>



<p>③MySQLパスワードは利用できない文字があります。 「_」はダメです 。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="999" height="465" src="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-5.png" alt="" class="wp-image-4490" srcset="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-5.png 999w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-5-300x140.png 300w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-5-768x357.png 768w" sizes="(max-width: 999px) 100vw, 999px" /></figure></div>



<p>次に「testuser」、パスワードも同じものを記入しました。が</p>



<p>②MySQLユーザは６文字以内でないとダメです。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="996" height="506" src="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1.png" alt="" class="wp-image-4488" srcset="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1.png 996w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1-300x152.png 300w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1-768x390.png 768w" sizes="(max-width: 996px) 100vw, 996px" /></figure></div>



<p>次に「user1」、パスワードを同じにしました。</p>



<p>④MySQLのパスワードは「半角8文字以上16文字以内」でないとダメなようです。。</p>



<p class="is-style-balloon_box">このように制限があるので、決まりを抑えておきましょう。もう一度まとめると以下となります。</p>



<ol class="is-style-num_circle wp-block-list"><li>ユーザIDは半角英数字のみ使用</li><li>ユーザIDは６文字以内にする</li><li>パスワードは半角英数字や利用可能な文字のみ</li><li>パスワードは８文字以上16文字以内</li></ol>



<h2 class="wp-block-heading">データベースのアクセス権をユーザに持たせる</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="512" src="https://sugublog.org/wp-content/uploads/2021/11/access1114-1024x512.jpg" alt="user" class="wp-image-4500" srcset="https://sugublog.org/wp-content/uploads/2021/11/access1114-1024x512.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/access1114-300x150.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/access1114-768x384.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/access1114.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>データベースとユーザが作成できたので、データベースのアクセス権を持つユーザーを割り当てます。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1003" height="603" src="https://sugublog.org/wp-content/uploads/2021/11/5.png" alt="" class="wp-image-4494" srcset="https://sugublog.org/wp-content/uploads/2021/11/5.png 1003w, https://sugublog.org/wp-content/uploads/2021/11/5-300x180.png 300w, https://sugublog.org/wp-content/uploads/2021/11/5-768x462.png 768w" sizes="(max-width: 1003px) 100vw, 1003px" /></figure></div>



<p>「MySQL一覧」タブの該当データベースのアクセス権未所有ユーザで先程作成したユーザを選択し、「追加」をクリックします。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1006" height="633" src="https://sugublog.org/wp-content/uploads/2021/11/6.png" alt="" class="wp-image-4495" srcset="https://sugublog.org/wp-content/uploads/2021/11/6.png 1006w, https://sugublog.org/wp-content/uploads/2021/11/6-300x189.png 300w, https://sugublog.org/wp-content/uploads/2021/11/6-768x483.png 768w" sizes="(max-width: 1006px) 100vw, 1006px" /></figure></div>



<p>アクセス権所有ユーザに、先程追加したユーザが見えれば成功です。</p>



<h2 class="wp-block-heading">XサーバでMySQLのホスト名を探す</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="620" src="https://sugublog.org/wp-content/uploads/2021/11/user1114-1024x620.jpg" alt="user" class="wp-image-4505" srcset="https://sugublog.org/wp-content/uploads/2021/11/user1114-1024x620.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/user1114-300x182.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/user1114-768x465.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/user1114.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>MySQLサーバのホスト名を探します。データベース作成する時に載っているので、MySQLの項目から探します。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1006" height="809" src="https://sugublog.org/wp-content/uploads/2021/11/host.png" alt="" class="wp-image-4497" srcset="https://sugublog.org/wp-content/uploads/2021/11/host.png 1006w, https://sugublog.org/wp-content/uploads/2021/11/host-300x241.png 300w, https://sugublog.org/wp-content/uploads/2021/11/host-768x618.png 768w" sizes="(max-width: 1006px) 100vw, 1006px" /></figure></div>



<p>データベースを作成した画面の下の方に載っています。</p>



<p>MySQLのホスト名がこれにあたります。</p>



<p class="is-style-balloon_box">これでWebサーバで公開する時に変更するパラメータが揃いました。おさらいしておきます。</p>



<ul class="is-style-good_list wp-block-list"><li>データベース名：sugublog7_test</li><li>ユーザー名とパスワード:sugublog7_user1 :testuser</li><li>ホスト名:〇〇（あなたの環境にお合わせ下さい）.xserver.jp</li></ul>



<h2 class="wp-block-heading">PHPをWeb公開用に変更する</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="436" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-2-1024x436.jpg" alt="データベース" class="wp-image-4501" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-2-1024x436.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-2-300x128.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-2-768x327.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-2.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>では初めに作成したPHPの変更する部分を変更してみましょう。</p>



<p>データベースに接続する構文は以下になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
try{
 $DB_DATABASE = &#39;sugublog7_test&#39;;
 $DB_USERNAME = &#39;sugublog7_user1&#39;;
 $DB_PASSWORD = &#39;testuser&#39;;
 $DB_OPTION = &#39;charset=utf8&#39;;
 $PDO_DSN = &quot;mysql:host=〇〇.xserver.jp;dbname=&quot; . $DB_DATABASE . &quot;;&quot; . $DB_OPTION;
 $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD,
 [   PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION,
 ]);
 echo &#39;DB接続成功&#39;;
 } catch(PDOException $e){
 echo &#39;DB接続失敗&#39;;
}
?&gt;</code></pre></div>



<p class="is-style-balloon_box">変更箇所は4つですね。</p>



<ul class="is-style-good_list wp-block-list"><li>DB名を「mydatabase」から「sugublog7_test」に変更しました。</li><li>ユーザ名を「root」から「sugublog7_user1」に変更しました。</li><li>パスワードを「なし」から「testuser」に変更しました。</li><li>ホスト名を「localhost」から「〇〇.xserver.jp」に変更しました。</li></ul>



<p>これでWebサイト用に変更できました。</p>



<p>Xサーバのファイルアップロードでアップして、サイトを見てみましょう。</p>



<p>上手くDB成功と表示されれば成功です。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/php-base-fix-dbaccess-on-xserver/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DBを簡単作成出来るphpmyadminを使用してテーブル操作する</title>
		<link>https://sugublog.org/phpmyadmin-base/</link>
					<comments>https://sugublog.org/phpmyadmin-base/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Mon, 23 Aug 2021 12:16:47 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[DB]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=4051</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-3-1-1024x585.jpg" class="webfeedsFeaturedVisual" /></p>phpなどでDB（データベース）を扱う事が多いですが、DBはコマンドで操作する事が多いです。 しかし、コマンドを覚えるのも大変です。GUIで簡単に作成してサイトやサービス作成の時間に割きたいものです。 そこでGUIで簡単 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-3-1-1024x585.jpg" class="webfeedsFeaturedVisual" /></p>
<p>phpなどでDB（データベース）を扱う事が多いですが、DBはコマンドで操作する事が多いです。</p>



<p>しかし、コマンドを覚えるのも大変です。GUIで簡単に作成してサイトやサービス作成の時間に割きたいものです。</p>



<p>そこでGUIで簡単にDB作成や操作可能な、phpmyadminの使用方法を覚書します。</p>



<p>phpmyadminを使用する事で、簡単にデータベース作成が可能になり作業がはかどります。</p>



<h2 class="wp-block-heading">phpmyadminを使用してテーブル操作する</h2>



<h3 class="wp-block-heading">phpmyadminの起動とアクセス</h3>



<p>今回はWebサーバーとDBが一緒に扱えるXAMPPを使用します。</p>



<p>XAMPPのインストール方法は下記の「XAMPPをインストールして自端末をサーバーにしてみよう」の記事を参考にしてください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/01/pc17.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/xampp-install/">【初心者向け】XAMPPをインストールして自端末をサーバーにしてみよう。</a>
						<span class="p-blogCard__excerpt">プログラミングの結果を試すのにサーバーが必要だけど、レンタルサーバー借りるの面倒臭いし勿体無い。自端末をサーバーにしてコード試したいな。 そういった人向けです&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>インストール出来たらXAMPPを起動して、WebサーバーとDBサーバーの「start」ボタンを押して起動します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="670" height="436" src="https://sugublog.org/wp-content/uploads/2021/08/image.png" alt="XAMPPでWebサーバーとDBサーバーを起動する画面" class="wp-image-3810" srcset="https://sugublog.org/wp-content/uploads/2021/08/image.png 670w, https://sugublog.org/wp-content/uploads/2021/08/image-300x195.png 300w" sizes="(max-width: 670px) 100vw, 670px" /></figure>
</div>


<p>「Apache」と「MySQL」が緑背景になっていれば、起動している証拠です。</p>



<h2 class="wp-block-heading">phpmyadminでデータベース作成</h2>



<p>早速MySQLのDBサーバーにアクセスして見ましょう。インターネットエクスプローラーで「127.0.0.1/phpmyadmin」にアクセスしてみます。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="293" src="https://sugublog.org/wp-content/uploads/2021/08/image-3-1024x293.png" alt="phpmyadminでデーターベース作成" class="wp-image-3817" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-3-1024x293.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-3-300x86.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-3-768x220.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-3-1536x439.png 1536w, https://sugublog.org/wp-content/uploads/2021/08/image-3.png 1559w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>データベースを作成しましょう！左上の「データベース」をクリックします。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="985" height="495" src="https://sugublog.org/wp-content/uploads/2021/08/image-4.png" alt="phpmyadminでデータベース名を決める画面" class="wp-image-3818" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-4.png 985w, https://sugublog.org/wp-content/uploads/2021/08/image-4-300x151.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-4-768x386.png 768w" sizes="(max-width: 985px) 100vw, 985px" /></figure>
</div>


<p>データベースの名前を決めましょう。今回は「mydatabase」にしました。入力して右の「作成」を押します。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="885" height="355" src="https://sugublog.org/wp-content/uploads/2021/08/image-5.png" alt="データベース作成できているかの確認画面" class="wp-image-3819" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-5.png 885w, https://sugublog.org/wp-content/uploads/2021/08/image-5-300x120.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-5-768x308.png 768w" sizes="(max-width: 885px) 100vw, 885px" /></figure>



<p>左に今回作成した「mydatabase」が作成されました。</p>



<h2 class="wp-block-heading">phpmyadminでテーブルを作成</h2>



<p>続いて先に作成した「mydatabase」の中にテーブルを作成します。</p>



<p>左のメニューから、先に作成したデータベース「mydatabase」を選択して、「構造」タブからテーブル作成します。</p>



<p>今回は名前に「users」という名前を入力しました。カラム数は3にしました。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="792" height="232" src="https://sugublog.org/wp-content/uploads/2021/08/image-6.png" alt="テーブル作成画面" class="wp-image-3833" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-6.png 792w, https://sugublog.org/wp-content/uploads/2021/08/image-6-300x88.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-6-768x225.png 768w" sizes="(max-width: 792px) 100vw, 792px" /></figure>



<p>右の方に「実行」ボタンがありますので、クリックしてテーブルを作成します。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="427" src="https://sugublog.org/wp-content/uploads/2021/08/image-7-1024x427.png" alt="テーブルのカラム作成画面" class="wp-image-3834" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-7-1024x427.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-7-300x125.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-7-768x321.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-7.png 1337w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>３つのカラムを作成します。上記の図のように値を入力します。</p>



<p>名前は好きな名前を入力します。</p>



<p>「データ型」は値の種類を選択します。数字であれば「INT」、文字列なら「VARCHAR」にします。</p>



<p>長さはデータの大きさの上限です。</p>



<p>入力できたら右の「保存する」を押して、テーブルを作成します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="352" src="https://sugublog.org/wp-content/uploads/2021/08/image-24-1024x352.png" alt="テーブルのカラム作成確認の画面" class="wp-image-4053" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-24-1024x352.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-24-300x103.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-24-768x264.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-24.png 1033w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>左の「mydatabase」の中に「users」テーブルがあり、その中に「カラム」が3つ作成されています。</p>



<h3 class="wp-block-heading">カラムを好きな箇所に追加する</h3>



<p>テーブルとそれを構成するカラムが作成出来ましたので、好きな箇所にカラムを追記して見ます。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="356" src="https://sugublog.org/wp-content/uploads/2021/08/image-28-1024x356.png" alt="テーブルへカラム追加の画面" class="wp-image-4054" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-28-1024x356.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-28-300x104.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-28-768x267.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-28.png 1036w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>追加する個数を決めます。次にどのカラムの後ろに追加するか決めます。決まれば「実行」を押します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="845" height="323" src="https://sugublog.org/wp-content/uploads/2021/08/image-29.png" alt="テーブルにカラムを追加するステータス画面" class="wp-image-4055" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-29.png 845w, https://sugublog.org/wp-content/uploads/2021/08/image-29-300x115.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-29-768x294.png 768w" sizes="(max-width: 845px) 100vw, 845px" /></figure>
</div>


<p>名前を「room_number」、データ型に「INT」、長さを「10」にして、右の「保存する」をクリックします。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="778" height="325" src="https://sugublog.org/wp-content/uploads/2021/08/image-30.png" alt="追加カラム確認メッセージ" class="wp-image-4056" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-30.png 778w, https://sugublog.org/wp-content/uploads/2021/08/image-30-300x125.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-30-768x321.png 768w" sizes="(max-width: 778px) 100vw, 778px" /></figure>
</div>


<p class="is-style-big_icon_check">　「正常に変更されました」のメッセージを確認して、「構造」タブをクリックします。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="316" src="https://sugublog.org/wp-content/uploads/2021/08/image-31-1024x316.png" alt="カラム追加確認画面" class="wp-image-4057" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-31-1024x316.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-31-300x93.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-31-768x237.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-31.png 1039w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>先程追加した「room_number」が追加されています。</p>



<h2 class="wp-block-heading">phpmyadminでテーブルのカラムの値を追加する</h2>



<p>カラムの作成が出来ましたので、値を入力していきましょう。</p>



<p>「挿入」タブをクリックして、入力欄を表示します。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="869" height="778" src="https://sugublog.org/wp-content/uploads/2021/08/image-32.png" alt="カラムの値入力画面" class="wp-image-4058" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-32.png 869w, https://sugublog.org/wp-content/uploads/2021/08/image-32-300x269.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-32-768x688.png 768w" sizes="(max-width: 869px) 100vw, 869px" /></figure>



<p>値を入力します。良ければ「実行」をクリックします。</p>



<p class="is-style-icon_info">デフォルトで２行づつ追加できますが、増やす数を増やしたい場合は、左下の数字を変更してください。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="272" src="https://sugublog.org/wp-content/uploads/2021/08/image-33-1024x272.png" alt="カラムの値挿入確認メッセージ" class="wp-image-4059" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-33-1024x272.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-33-300x80.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-33-768x204.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-33.png 1177w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>「挿入しました」となっていれば成功です。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="888" height="445" src="https://sugublog.org/wp-content/uploads/2021/08/image-34.png" alt="カラムの値確認画面" class="wp-image-4060" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-34.png 888w, https://sugublog.org/wp-content/uploads/2021/08/image-34-300x150.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-34-768x385.png 768w" sizes="(max-width: 888px) 100vw, 888px" /></figure>
</div>


<p>「表示」タブをクリックすると、先程入力した値が入っているのがわかります。</p>



<h2 class="wp-block-heading"> phpmyadminでテーブルのカラムの値を削除する </h2>



<p>次は削除していきます。先程入力したカラムの値を全部削除します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="395" src="https://sugublog.org/wp-content/uploads/2021/08/image-35-1024x395.png" alt="カラムの値を削除する画面" class="wp-image-4062" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-35-1024x395.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-35-300x116.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-35-768x296.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-35.png 1078w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>下記の工程をふむ</p>



<ol class="is-style-num_circle wp-block-list">
<li>「users」テーブルを選択する</li>



<li>「SQL」タブをクリックする</li>



<li>「DELETE」ボタンをクリックする</li>



<li>テーブル名「users」以降のSQL文を削除する</li>
</ol>



<p>出来たら右に「実行」ボタンがあるので押します。</p>



<p>「実行しました」のメッセージが出たら成功です。「表示」タブをクリックします。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="740" height="334" src="https://sugublog.org/wp-content/uploads/2021/08/image-36.png" alt="カラムの値を削除確認画面" class="wp-image-4063" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-36.png 740w, https://sugublog.org/wp-content/uploads/2021/08/image-36-300x135.png 300w" sizes="(max-width: 740px) 100vw, 740px" /></figure>
</div>


<p>カラムの値が無くなっている事が確認できます。</p>



<h2 class="wp-block-heading"> phpmyadminでテーブルのカラムを削除する  </h2>



<p>今度はカラム自体を削除します。「構造」タブをクリックします。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="365" src="https://sugublog.org/wp-content/uploads/2021/08/image-38-1024x365.png" alt="カラム削除画面" class="wp-image-4065" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-38-1024x365.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-38-300x107.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-38-768x274.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-38.png 1119w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>削除したいカラムの横の「削除」ボタンをクリックしたら、個別に削除できます。</p>



<p>複数削除したい場合は、複数にチェックをいれて、下の「削除」をクリックします。</p>



<p>一括削除したい場合は、「すべてチェックする」にチェックを入れて、右の「削除」ボタンをクリックします。</p>



<h3 class="wp-block-heading">カラム全て削除でエラー</h3>



<p>エラーがでました。すべての列は削除できません。とのメッセージです。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="357" src="https://sugublog.org/wp-content/uploads/2021/08/image-39-1024x357.png" alt="カラム全削除エラー画面" class="wp-image-4066" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-39-1024x357.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-39-300x105.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-39-768x268.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-39.png 1100w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading"> カラム全て削除 エラーの原因</h3>



<p>すべてのカラムは一括で削除できない。</p>



<h3 class="wp-block-heading"> カラム全て削除するには</h3>



<p>テーブル自体を削除する事で、カラムを全部削除できます。</p>



<h2 class="wp-block-heading"> phpmyadminでテーブルを削除する </h2>



<p>ではテーブル自体を削除します。先程作成したデータベースを左のメニューから選択します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="271" src="https://sugublog.org/wp-content/uploads/2021/08/image-37-1024x271.png" alt="テーブル削除画面" class="wp-image-4067" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-37-1024x271.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-37-300x79.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-37-768x203.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-37.png 1182w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>データベースの中にあるテーブルが表示されますので、削除をクリックします。</p>



<p>確認で「はい」をクリックするとテーブルが削除できました。</p>



<p>phpmyadminで簡単にデータベースを扱ってみましょう！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/phpmyadmin-base/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【php基礎】DBの操作！データベースの値を取得して表示する方法</title>
		<link>https://sugublog.org/php-base-db-control/</link>
					<comments>https://sugublog.org/php-base-db-control/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Tue, 17 Aug 2021 14:28:12 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[DB]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=3886</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-5-1024x566.jpg" class="webfeedsFeaturedVisual" /></p>phpでDBを操作出来たら、やれる事が大幅に広がります。更にコードが簡素化できて綺麗になります。わかりやすくもなりますので是非phpでDBを操作できる様になりましょう！ 今回はphpでDB操作する基本を押さえておきます。 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-5-1024x566.jpg" class="webfeedsFeaturedVisual" /></p>
<p>phpでDBを操作出来たら、やれる事が大幅に広がります。更にコードが簡素化できて綺麗になります。わかりやすくもなりますので是非phpでDBを操作できる様になりましょう！</p>



<p>今回はphpでDB操作する基本を押さえておきます。実際のコードを見ながら解説しますので比較しながら行ってください。</p>



<p>現在は下記の状態になっているものとします。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>現在の状態</span></div><div class="cap_box_content">
<ol id="block-c831c236-9d2c-4a72-b3ea-7adcf0920bbf" class="is-style-num_circle wp-block-list">
<li>DBやテーブルやカラムを作成している</li>



<li>PDOにてDBに接続出来ている</li>



<li>PDOのインスタンスを$dbという変数に格納しているものとする</li>
</ol>
</div></div>



<p>自分のパソコンをDBにしています。上記3つのコードは下記になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
try{
 $DB_DATABASE = &#39;mydatabase&#39;;
 $DB_USERNAME = &#39;root&#39;;
 $DB_PASSWORD = &#39;&#39;;
 $DB_OPTION = &#39;charset=utf8&#39;;
 $PDO_DSN = &quot;mysql:host=localhost;dbname=&quot; . $DB_DATABASE . &quot;;&quot; . $DB_OPTION;
 $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD,
 [   PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION
 ]);
 echo &#39;DB接続成功&#39;;
 } catch(PDOException $e){
 echo &#39;DB接続失敗&#39;;
}
?&gt;</code></pre></div>



<p class="is-style-balloon_box">まだDBに接続していない方、DBに接続する方法がわからない方は、下記の「DBにアクセスする時の構文を理解する」を参考にしてください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-6-300x204.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-dbaccess/">【php基礎】PDOでDBにアクセスする時の構文とは？例外処理あり</a>
						<span class="p-blogCard__excerpt">phpでDBを使用できると、サービスの幅がとてつもなく広がります。今回はphpでDBと連携をとる時の基礎をやっていきます。 今回行うDBへ連携する時の項目は下記です。 DB&#8230;</span>					</div>
				</div>
			</div>
		</div>


<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">phpでDBの操作するには</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-10-1024x576.jpg" alt="script" class="wp-image-3958" srcset="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-10-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/programing_0812-10-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/programing_0812-10-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/programing_0812-10.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>まずはSQLの構文を変数に格納します。構文は下記です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$変数 = $PDOインスタンスを格納した変数-&gt;メソッド(&quot;SQL文&quot;);</code></pre></div>



<p>格納する変数を決めます。よく「$stmt」とします。今回もstmt(ステートメント)にします。</p>



<p>「$PDOインスタンスを格納した変数」は$dbとしています。</p>



<p>メソッドは2種類あります。</p>



<ol class="is-style-num_circle -list-under-dashed wp-block-list">
<li>prepare</li>



<li>query</li>
</ol>



<h3 class="wp-block-heading">①prepareは条件とする値が変動する場合に使用します。</h3>



<p>prepareメソッドを使用する場合の、流れは下記です。</p>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li>値をバインドする</li>



<li>実行する</li>



<li>取り出し方を決めて取り出し、配列に格納する</li>



<li>配列から取り出し、表示する</li>
</ol>



<h3 class="wp-block-heading"> ② <span style="font-size: revert; background-color: var(--color_content_bg); color: var(--color_text); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;">query</span> は条件とする値が変動しない場合に使用します。 </h3>



<p>queryメソッドを使用する場合の、流れは下記です。 </p>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li><s>値をバインドする</s></li>



<li><s>実行する</s></li>



<li>取り出し方を決めて取り出し、配列に格納する</li>



<li>配列から取り出し、表示する</li>
</ol>



<p>②と③の工程はなくなります。queryは値が変更しない場合なので②の値をバインドする必要がありません。</p>



<p>更に「query」メソッドだけで実行もしてくれる為、③の工程もありません。</p>



<h2 class="wp-block-heading"> ①prepareで条件が変動する構文で、DBから値抽出 </h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-8-1024x576.jpg" alt="スクリプト" class="wp-image-3865" srcset="https://sugublog.org/wp-content/uploads/2021/08/script_0809-8-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-8-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-8-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-8.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="has-border -border02">今回はSQLインジェクションのセキュリティ対策にもなりますので、「prepare」を使用します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt = $db-&gt;prepare(&quot;SQL文&quot;);</code></pre></div>



<p>あとはSQL文だけです。SQLのメソッドは複数ありますが、よく使用されるメソッドは下記の4つです。</p>



<ul class="-list-under-dashed wp-block-list">
<li>DBの値を取得するselect</li>



<li>DBの値を変更するupdate</li>



<li>DBの値を追記するinsert</li>



<li>DBの値を消すdelete</li>
</ul>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-2-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-4major-commands/">【SQL基礎】4大命令文一覧！insert、update、select、deleteについて</a>
						<span class="p-blogCard__excerpt">SQLでよく使用される命令文があります。SQLの4大命令文です。 SQLでデータベースを操作する時に良く使用されます。しっかりと基礎構文を抑えて、良いサービスを構築しま&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>このSQLの文によってDBから値を取得したり、DBを変更したりできます。</p>



<h3 class="wp-block-heading"> <span style="font-size: revert; background-color: var(--color_content_bg); color: var(--color_text); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;">DBの値を変更するupdate</span> </h3>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-7-300x160.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-update/">【SQL基礎】データベースの値を変更するupdateコマンド</a>
						<span class="p-blogCard__excerpt">SQLでデータベースの値を変更したい場合、SQL4大命令文の一つ「update」コマンドを使用します。 一つのサービスでデータを変更する事は、頻繁にあると思います。 きちん&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h3 class="wp-block-heading"> <span style="font-size: revert; background-color: var(--color_content_bg); color: var(--color_text); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;">DBの値を追記するinsert</span> </h3>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-3-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-insert/">【SQL基礎】insert文でDB（データベース）にデータを挿入する</a>
						<span class="p-blogCard__excerpt">MySQLの4大命令文の中の1つ、insert文について見ていきます。 insert文はデータベースにデータを挿入する事が可能です。 insert文の基礎を学んで、データベースにデータ&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h3 class="wp-block-heading"> <span style="font-size: revert; background-color: var(--color_content_bg); color: var(--color_text); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;">DBの値を消すdelete</span> </h3>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-8-300x171.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-delete/">【SQL基礎】deleteでデータのレコードを行削除する方法とは？</a>
						<span class="p-blogCard__excerpt">SQLでデータベースからレコードの行の値を削除する方法をご紹介します。 SQLでレコードを削除する事は多いと思いますので、deleteの構文の基礎をしっかり取得しましょう&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h3 class="wp-block-heading">DBから値を抽出するselect</h3>



<p>ここでは値を取得する「select」を使用します。</p>



<p class="is-style-balloon_box">SQLのselect構文の詳しい記事は、select文でDBの値を取得する！の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/DB0804-1-300x225.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-select/">【SQL基礎】select文でDBの値を取得する!データ抽出方法</a>
						<span class="p-blogCard__excerpt">SQLのデータベースを使用する時の、構文を忘れる事が多々あるので覚書します。 データベースを扱えるようになれば、業務の幅も広がりますし、コードも少なく綺麗にする&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>mydatabaseに接続しています。そのDBの中に「users」テーブルを作成しています。詳細は下記です。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th> id </th><th> name </th><th> score </th></tr></thead><tbody><tr><td>1</td><td>user_1</td><td>47</td></tr><tr><td>2</td><td>user_2</td><td>24</td></tr></tbody></table><figcaption class="wp-element-caption">mydatabaseのusersテーブル</figcaption></figure>



<p>nameの値が変数で、scoreの値を取得するとします。するとSQL文は下記になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select score from users where name=?;</code></pre></div>



<p class="is-style-icon_pen">条件が変更する箇所を「?」としています。「?」ではなく好きな名前を使用する事も可能です。</p>



<p class="is-style-balloon_box">詳しくは下記の「PDOのprepareとqueryでSQL文を変数に格納する」の記事を参考にしてください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-prepare-and-query/">【PHP基礎】PDOのprepareとqueryでSQL文を変数に格納する</a>
						<span class="p-blogCard__excerpt">PHPでprepareやqueryを使用したいけど、よくわかりません。プレースフォルダーが上手くいきません。 このような悩みも解決します。実例をつけながら丁寧に解説します。 &#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>SQL文も完成しましたので、先程のphpと合わせます。最終的にコードは下記になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt = $db-&gt;prepare(&quot;select score from users where name=?&quot;);</code></pre></div>



<p> これでSQLの構文を変数に格納できました。</p>



<h3 class="wp-block-heading">値をバインドする</h3>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li><strong>値をバインドする</strong>←<strong><span class="has-inline-color has-swl-deep-01-color">次はこの工程</span></strong></li>



<li>実行する</li>



<li>取り出し方を決めて取り出し、配列に格納する</li>



<li>配列から取り出し、表示する</li>
</ol>



<p>先程のSQLの「?」の部分の値を決めます。構文は下記です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt-&gt;bindValue(id,&#39;値&#39;,定数);</code></pre></div>



<p>再程の変数$stmtから-&gt;bindValueメソッドを呼び出しています。（）の中身は下記です。</p>



<ul class="-list-under-dashed wp-block-list">
<li>id:パラメータIDを指定します・・・「？」が複数ある場合の番号、1つしかなければ1確定</li>



<li>値:実際に入る値を指定します・・・「？」に入る値</li>



<li>オプション:データの型を指定可能です・・・下記</li>
</ul>



<p class="is-style-balloon_box">定数はデータ型を指定できます。種類は下記です。</p>



<ul class="wp-block-list">
<li>PDO::PARAM_STR　・・・デフォルトで文字列型</li>



<li>PDO::PARAM_INT　・・・数値型</li>



<li>PDO::PARAM_BOOL　・・・BOOLERN型</li>



<li>PDO::PARAM_NULL　・・・NULL型</li>



<li>・・・・などなど</li>
</ul>



<p class="is-style-icon_pen">文字列型と数値型が、ほとんどだと思います。</p>



<p class="is-style-balloon_box">prepareやbindに関して、もっと詳しく知りたい方は、「PDOのprepareとqueryでSQL文を変数に格納する」の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-prepare-and-query/">【PHP基礎】PDOのprepareとqueryでSQL文を変数に格納する</a>
						<span class="p-blogCard__excerpt">PHPでprepareやqueryを使用したいけど、よくわかりません。プレースフォルダーが上手くいきません。 このような悩みも解決します。実例をつけながら丁寧に解説します。 &#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>以上を踏まえて、今回のコードは下記になりました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt-&gt;bindValue(1,&#39;user_1&#39;,PDO::PARAM_STR);</code></pre></div>



<p>「?」が一つしかないので、idは１</p>



<p>今回はカラム「name」が「user_1」の値の取得</p>



<p>「user_1」なので文字列型を指定して、バインドしようと思います。つまりPDO::PARAM_STRを指定します。</p>



<h3 class="wp-block-heading">実行します</h3>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li>値をバインドする</li>



<li><strong>実行する</strong>←<strong><span class="has-inline-color has-swl-deep-01-color">次はこの工程</span></strong></li>



<li>取り出し方を決めて取り出し、配列に格納する</li>



<li>配列から取り出し、表示する</li>
</ol>



<p>実行する為の、基礎構文は下記です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt-&gt;execute();</code></pre></div>



<p>これで実行できました。</p>



<h3 class="wp-block-heading"> <span style="font-size: revert; background-color: var(--color_content_bg); color: var(--color_text); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;">取り出し方を決めて取り出し、配列に格納する</span> </h3>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li>値をバインドする</li>



<li>実行する</li>



<li><strong>取り出し方を決めて取り出し、配列に格納する</strong><span class="has-inline-color has-swl-deep-01-color">←<strong>次はこの工程</strong></span></li>



<li>配列から取り出し、表示する</li>
</ol>



<p>実行したものから、値を取得しましょう。</p>



<p>構文は下記です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$配列 = $変数-&gt;メソッド(オプション);</code></pre></div>



<ul class="-list-under-dashed wp-block-list">
<li>$配列：抽出した値は配列に入ります。</li>



<li>$変数：先程の変数</li>



<li>メソッド：（fetch | fetchAll）</li>



<li>オプション：下記に示す</li>
</ul>



<p class="is-style-balloon_box">オプションは下記があります。</p>



<ul class="wp-block-list">
<li>PDO::FETCH_BOTH　・・・デフォルト</li>



<li>PDO::FETCH_ASSOC</li>



<li>PDO::FETCH_NUM</li>



<li>PDO::FETCH_KEY_PAIR</li>



<li>PDO::FETCH_COLUMN</li>
</ul>



<p>④ <strong style="font-size: revert; background-color: var(--color_content_bg); color: var(--color_text); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;">取り出し方を決めて取り出し、配列に格納する</strong>について詳しく知りたい方は「PDOのfetchやfetchAllで値を抽出する」の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-3-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-pdo-fetch/">【PHP基礎】PDOのfetchやfetchAllで値を抽出する</a>
						<span class="p-blogCard__excerpt">fetchとはPHPでデータベースにアクセスして、値を抽出する時に使用するメソッドです。 fetchを使用しDBの値を抽出して、利用しましょう。 fetchを使いこなしDBを使用す&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>今回は下記コードにします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$username = $stmt-&gt;fetch(PDO::FETCH_BOTH);</code></pre></div>



<ul class="-list-under-dashed wp-block-list">
<li>usernameという配列に格納します。</li>



<li>fetchで適応する最初の１つを取り出します</li>



<li>定数でPDO::FETCH_BOTHを指定します。　</li>
</ul>



<h2 class="wp-block-heading">SQLでDBの値を表示する。</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="620" src="https://sugublog.org/wp-content/uploads/2021/07/PC007-8-1024x620.jpg" alt="PC" class="wp-image-3717" srcset="https://sugublog.org/wp-content/uploads/2021/07/PC007-8-1024x620.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/07/PC007-8-300x182.jpg 300w, https://sugublog.org/wp-content/uploads/2021/07/PC007-8-768x465.jpg 768w, https://sugublog.org/wp-content/uploads/2021/07/PC007-8.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>最後の工程です。</p>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li>値をバインドする</li>



<li>実行する</li>



<li>取り出し方を決めて取り出し、配列に格納する</li>



<li><strong>配列から取り出し、表示する</strong><span class="has-inline-color has-swl-deep-01-color">←<strong>次はこの工程</strong></span></li>
</ol>



<p>④で配列に格納した値を見てみます。</p>



<p>print_r($username);を追記して、ページにアクセスしてみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
try{
 $DB_DATABASE = &#39;mydatabase&#39;;
 $DB_USERNAME = &#39;root&#39;;
 $DB_PASSWORD = &#39;&#39;;
 $DB_OPTION = &#39;charset=utf8&#39;;
 $PDO_DSN = &quot;mysql:host=localhost;dbname=&quot; . $DB_DATABASE . &quot;;&quot; . $DB_OPTION; #DSN データソースネームmysqlの場合
 $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD, #接続するにはまずインスタンスを作成
 [   PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION
 ]);
 echo &#39;DB接続成功&lt;/br&gt;&#39;;
 $stmt = $db-&gt;prepare(&quot;select name from users where score=?&quot;);
 $stmt-&gt;bindValue(1,44,PDO::PARAM_INT);
 $stmt-&gt;execute();
 $username = $stmt-&gt;fetch(PDO::FETCH_BOTH);
print_r($username);
  } catch(PDOException $e){
 echo &#39;DB接続失敗&#39;;
}
?&gt;</code></pre></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-html" data-lang="HTML"><code>DB接続成功
Array ( [name] =&gt; user_3 [0] =&gt; user_3 )</code></pre></div>



<ul class="-list-under-dashed wp-block-list">
<li>配列にKeyがname、値がuser_3が入っています</li>



<li>配列の0番目にuser_3の値が入っています</li>
</ul>



<p>fetch(PDO::FETCH_BOTH)だとこのような配列を取得するのでした。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-3-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-pdo-fetch/">【PHP基礎】PDOのfetchやfetchAllで値を抽出する</a>
						<span class="p-blogCard__excerpt">fetchとはPHPでデータベースにアクセスして、値を抽出する時に使用するメソッドです。 fetchを使用しDBの値を抽出して、利用しましょう。 fetchを使いこなしDBを使用す&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>では配列から値を表示してみます。下記を追記して、ページにアクセスします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>echo $username[&quot;name&quot;] .&quot;と&quot; . $username[0];</code></pre></div>



<ol class="is-style-num_circle wp-block-list">
<li>変数からKeyがnameの値を取り出しています</li>



<li>間に「と」をくっつける為に「.&#8221;と&#8221;.」を入力しています</li>



<li>変数から０番目の値を取り出しています</li>
</ol>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
try{
 $DB_DATABASE = &#39;mydatabase&#39;;
 $DB_USERNAME = &#39;root&#39;;
 $DB_PASSWORD = &#39;&#39;;
 $DB_OPTION = &#39;charset=utf8&#39;;
 $PDO_DSN = &quot;mysql:host=localhost;dbname=&quot; . $DB_DATABASE . &quot;;&quot; . $DB_OPTION; #DSN データソースネームmysqlの場合
 $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD, #接続するにはまずインスタンスを作成
 [   PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION
 ]);
 echo &#39;DB接続成功&lt;/br&gt;&#39;;
 $stmt = $db-&gt;prepare(&quot;select name from users where score=?&quot;);
 $stmt-&gt;bindValue(1,44,PDO::PARAM_INT);
 $stmt-&gt;execute();
 $username = $stmt-&gt;fetch(PDO::FETCH_BOTH);
echo $username[&quot;name&quot;] .&quot;と&quot; . $username[0];
  } catch(PDOException $e){
 echo &#39;DB接続失敗&#39;;
}
?&gt;</code></pre></div>



<p>結果は下記になりました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-html" data-lang="HTML"><code>DB接続成功
user_3とuser_3</code></pre></div>



<h2 class="wp-block-heading"> ②queryで条件が固定の構文で、DBから値抽出 </h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="768" src="https://sugublog.org/wp-content/uploads/2021/07/PC007-1-1024x768.jpg" alt="PC" class="wp-image-3722" srcset="https://sugublog.org/wp-content/uploads/2021/07/PC007-1-1024x768.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/07/PC007-1-300x225.jpg 300w, https://sugublog.org/wp-content/uploads/2021/07/PC007-1-768x576.jpg 768w, https://sugublog.org/wp-content/uploads/2021/07/PC007-1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>queryの工程は下記でした。</p>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li><s>値をバインドする</s></li>



<li><s>実行する</s></li>



<li>取り出し方を決めて取り出し、配列に格納する</li>



<li>配列から取り出し、表示する</li>
</ol>



<p>②queryは条件の値が同じ場合に使用します。値が変動しないので②値をバインドする必要がありません</p>



<p>③query自体実行してくれますので実行をする必要がありません。</p>



<p>SQL文はそのままSQL文を文字列で記入します。</p>



<p>コードは下記になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
try{
 $DB_DATABASE = &#39;mydatabase&#39;;
 $DB_USERNAME = &#39;root&#39;;
 $DB_PASSWORD = &#39;&#39;;
 $DB_OPTION = &#39;charset=utf8&#39;;
 $PDO_DSN = &quot;mysql:host=localhost;dbname=&quot; . $DB_DATABASE . &quot;;&quot; . $DB_OPTION; #DSN データソースネームmysqlの場合
 $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD, #接続するにはまずインスタンスを作成
 [   PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION
 ]);
 echo &#39;DB接続成功&lt;/br&gt;&#39;;
 $stmt = $db-&gt;query(&quot;select name from users where score=44&quot;);
 $username = $stmt-&gt;fetch(PDO::FETCH_BOTH);
echo $username[&quot;name&quot;] .&quot;と&quot; . $username[0];
  } catch(PDOException $e){
 echo &#39;DB接続失敗&#39;;
}
?&gt;</code></pre></div>



<ul class="-list-under-dashed wp-block-list">
<li>prepareをqueryに変更しています</li>



<li>②③の工程がないので、bindとexecuteの行が無くなっています</li>
</ul>



<p>これでページにアクセスしてみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-html" data-lang="HTML"><code>DB接続成功
user_3とuser_3</code></pre></div>



<p>先程と同じ結果になりました。</p>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231" crossorigin="anonymous"></script>
<ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-9330904718533231" data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<p class="is-style-balloon_box">スキルアップするにはプログラミングスクールもオススメです。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/school_08-7-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/programing-school/">【2024年】プログラミングスクールおすすめランキング！評判と口コミ</a>
						<span class="p-blogCard__excerpt">プログラミングスクールで学習して、スキルを上げて年収を上げたい。フリーランスになるためにプログラミングを習いたい。 こういった願望を抱いている人も沢山います。&#8230;</span>					</div>
				</div>
			</div>
		</div>

<div class="p-blogParts post_content" data-partsID="6113">
<div class="wp-block-columns">
<div class="wp-block-column">
<a href="https://px.a8.net/svt/ejp?a8mat=3TNJ87+8UIXF6+5EPG+65U41" rel="nofollow">
<img decoding="async" border="0" width="250" height="250" alt="" src="https://www29.a8.net/svt/bgt?aid=231205399535&#038;wid=001&#038;eno=01&#038;mid=s00000025234001035000&#038;mc=1"></a>
<img decoding="async" border="0" width="1" height="1" src="https://www18.a8.net/0.gif?a8mat=3TNJ87+8UIXF6+5EPG+65U41" alt="">
</div>



<div class="wp-block-column">
<a href="https://px.a8.net/svt/ejp?a8mat=3HP27C+14HHWY+3XAE+69P01" rel="nofollow">
<img decoding="async" border="0" width="300" height="250" alt="" src="https://www27.a8.net/svt/bgt?aid=211121256068&#038;wid=001&#038;eno=01&#038;mid=s00000018311001053000&#038;mc=1"></a>
<img decoding="async" border="0" width="1" height="1" src="https://www11.a8.net/0.gif?a8mat=3HP27C+14HHWY+3XAE+69P01" alt="">
</div>
</div>
</div>


<h2 class="wp-block-heading">DBの操作！データベースの値を取得して表示する方法のまとめ</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="655" src="https://sugublog.org/wp-content/uploads/2021/07/PC007-6-1024x655.jpg" alt="PC" class="wp-image-3715" srcset="https://sugublog.org/wp-content/uploads/2021/07/PC007-6-1024x655.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/07/PC007-6-300x192.jpg 300w, https://sugublog.org/wp-content/uploads/2021/07/PC007-6-768x492.jpg 768w, https://sugublog.org/wp-content/uploads/2021/07/PC007-6.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>DBの値を取得するにはprepareとqueryを使用する。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span> prepareの特徴 </span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>条件が変動するので、使いまわし可能</li>



<li>SQLと変動する値が別々の構文なので、SQLインジェクション対策になる </li>



<li>値のbindと実行が必要で手間がかかる</li>
</ul>
</div></div>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span> query の特徴</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li> 条件が変動しないので、使いまわしできない </li>



<li>１文で実行まで行うので、手間がかからない</li>



<li>1文のSQLなので、SQLインジェクションに注意が必要</li>
</ul>
</div></div>



<p>fetchでDBの取得した値を配列に入れる。</p>



<p>配列から値を表示して完了。</p>



<p>難しいですが、頑張って学習していきましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/php-base-db-control/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【PHP基礎】PDOのprepareとqueryでSQL文を変数に格納する</title>
		<link>https://sugublog.org/php-base-prepare-and-query/</link>
					<comments>https://sugublog.org/php-base-prepare-and-query/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Tue, 10 Aug 2021 13:16:06 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[DB]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=3912</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>PHPでprepareやqueryを使用したいけど、よくわかりません。プレースフォルダーが上手くいきません。 このような悩みも解決します。実例をつけながら丁寧に解説します。 この記事を最後まで読んでprepareやque [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>
<p>PHPでprepareやqueryを使用したいけど、よくわかりません。プレースフォルダーが上手くいきません。</p>



<p>このような悩みも解決します。実例をつけながら丁寧に解説します。</p>



<p>この記事を最後まで読んでprepareやqueryの特徴などを理解して、試して見て下さい。</p>



<p>PHPでデータベースにアクセスし、「値を操作」したい場合、「メソッド」が必要になります。</p>



<p class="is-style-balloon_box">値を操作するとは、下記などです。</p>



<ul class="wp-block-list">
<li>作成する</li>



<li>抽出する</li>



<li>削除する</li>



<li>更新する</li>
</ul>



<p class="is-style-balloon_box">メソッドとはDBを操作する命令文です。ここでのメソッドには2種類あります。下記になります。</p>



<ol class="is-style-num_circle wp-block-list">
<li>prepare</li>



<li>query</li>
</ol>



<h2 class="wp-block-heading">PDOのprepareとqueryでSQL文を変数に格納する</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="682" src="https://sugublog.org/wp-content/uploads/2021/08/DB0804-2-1024x682.jpg" alt="DB" class="wp-image-3841" srcset="https://sugublog.org/wp-content/uploads/2021/08/DB0804-2-1024x682.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/DB0804-2-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/DB0804-2-768x511.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/DB0804-2.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>DBにPDOでアクセスするインスタンスを、新しく作成し格納した変数を「$db」とします。</p>



<p class="is-style-icon_book">PDOとはどんなDBにも同じ形でアクセスできる為に出来た、DBアクセスの規格のようなものです。</p>



<p class="is-style-icon_pen">インスタンスとは、設計書からできたものです。PDOというDB接続の設計書から出来た、今回のものです。</p>



<p>DBの中に「users」テーブルを作成しています。詳細は下記にしました。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th> id </th><th> name </th><th> score </th></tr></thead><tbody><tr><td>1</td><td>user_1</td><td>47</td></tr><tr><td>2</td><td>user_2</td><td>24</td></tr></tbody></table><figcaption class="wp-element-caption">DBのusersテーブル</figcaption></figure>



<p>PDOから出来たインスタンスには、SQLをリクエストするメソッドが２種類あります。先程言った２つになります。</p>



<h2 class="wp-block-heading">SQL文を送るメソッド「prepare」</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-1-1024x576.jpg" alt="スクリプト" class="wp-image-3869" srcset="https://sugublog.org/wp-content/uploads/2021/08/script_0809-1-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-1-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-1-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>まずはprepareです。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>prepareのメリット・デメリット</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>セキュリティが高い。 </li>



<li>手間がかかる。</li>
</ul>
</div></div>



<p>特徴はセキュリティ対策になる。リクエストするSQL文と、変化する値を別々にDBに送信するからです。</p>



<p class="is-style-icon_pen">メールで添付ファイルを送信し、別のメールでパスワードを添付する場合があると思いますが、同じイメージです。</p>



<p>prepareの工程は下記です。</p>



<ol class="is-style-num_circle wp-block-list">
<li>SQL本文を決める（値が変化する）・・・メールで言う添付ファイル</li>



<li>変化する値を決める　・・・メールで言うパスワード</li>



<li>実行する　・・・メール送信</li>
</ol>



<p>別々に送信するので、少し手間とリソースがかかります。</p>



<p class="is-style-icon_pen">リソースとは資源。ここではPCのCPUやメモリ、通信の帯域の事です。</p>



<p>基本的に値が変化する場合は、こちらを使用しましょう。</p>



<h2 class="wp-block-heading">prepareの基本構文を書く</h2>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$変数 = PDOから作成したインスタンスを格納した変数-&gt;prepare(&quot;SQL文&quot;);
$変数-&gt;bindValue(id,&#39;変化する値&#39;,PDO::データ型);
$変数-&gt;execute();</code></pre></div>



<p class="is-style-balloon_box">SQL文を決めます。ここでは下記の４つから操作します。</p>



<ul class="wp-block-list">
<li>作成する</li>



<li>抽出する</li>



<li>削除する</li>



<li>更新する</li>
</ul>



<p>今回は抽出する「select」を使用します。データベースのカラム「name」の値を変更して使いまわしします。</p>



<p class="is-style-balloon_box">SQLのselect構文の詳細は、下記の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/DB0804-1-300x225.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-select/">【SQL基礎】select文でDBの値を取得する!データ抽出方法</a>
						<span class="p-blogCard__excerpt">SQLのデータベースを使用する時の、構文を忘れる事が多々あるので覚書します。 データベースを扱えるようになれば、業務の幅も広がりますし、コードも少なく綺麗にする&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p class="is-style-icon_announce">変更する値は場所だけ確保しておきます。確保する領域を「プレースホルダー」と言います。</p>



<p> プレース ホルダーは２種類あります。「?」と「:名前」です。</p>



<p>SQL文を入れた今回のコードは下記です。どちらでも構いません。</p>



<p class="is-style-balloon_box"> プレース ホルダー「?」の場合</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt = $db-&gt;prepare(&quot;select score from users where name=?&quot;);</code></pre></div>



<p class="is-style-balloon_box">  プレース ホルダー「:名前」の場合 </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt = $db-&gt;prepare(&quot;select score from users where name=:ユーザー&quot;);</code></pre></div>



<p>usersテーブルからカラム「score」の値を取得します。カラム「name」が変化する値で、プレース ホルダーを使用しています。</p>



<p>インスタンス$dbのprepareメソッドで、SQL文を送る構文を変数「$stmt」に格納しました。</p>



<h2 class="wp-block-heading">prepareのプレースホルダーを埋める構文</h2>



<p>次にプレースホルダ―の値を埋めます。ここでは２つのメソッドがあります。</p>



<ol class="is-style-num_circle wp-block-list">
<li>bindValue</li>



<li>bindParam</li>
</ol>



<p>違い① bindValueで与える値は、直接値を指定しても、変数を使用してもOKです。bindParamで与える値は変数のみです。</p>



<p>違い② bindParamで実行する時にINT(数値型)を指定しても文字列になる。</p>



<p>違い③ bindValue もbindParamもexecuteで実行しますが、bindValue構文はその場で値が決まります。bindParamはexecuteする時に値が決まります。その前に変数の値が変われば、その値に変わるという事です。</p>



<h3 class="wp-block-heading"> prepareのプレースホルダーを埋めるbindValue構文 </h3>



<p>先程のSQLの「?」の部分の値を決めます。構文は下記です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt-&gt;bindValue(id,&#39;値&#39;,オプション);</code></pre></div>



<p class="is-style-balloon_box">再程の変数$stmtから-&gt;bindValueメソッドを呼び出しています。（）の中身は下記です。</p>



<ul class="wp-block-list">
<li>id:パラメータIDを指定します・・・「？」のホルダーが複数ある場合の番号、1つしかなければ1確定</li>



<li>id:パラメータIDを指定します・・・「:名前」のホルダーがある場合、:名前を指定する</li>



<li>値:実際に入る値を指定します・・・ホルダーに入る値</li>



<li>オプション:データの型を指定可能です・・・下記</li>
</ul>



<p class="is-style-balloon_box">オプションはデータ型を指定できます。種類は下記です。</p>



<ul class="wp-block-list">
<li>PDO::PARAM_STR　・・・デフォルトで文字列型</li>



<li>PDO::PARAM_INT　・・・数値型</li>



<li>PDO::PARAM_BOOL　・・・BOOLERN型</li>



<li>PDO::PARAM_NULL　・・・NULL型</li>



<li>・・・・などなど</li>
</ul>



<p class="is-style-icon_pen">文字列型と数値型が、ほとんどだと思います。</p>



<p>以上を踏まえて、今回のコードは下記になりました。</p>



<p class="is-style-balloon_box">  プレース ホルダー「?」の場合 </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt-&gt;bindValue(1,&#39;user_1&#39;,PDO::PARAM_STR);</code></pre></div>



<p class="is-style-balloon_box u-mb-ctrl u-mb-20">  プレース ホルダー「:名前」の場合 </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt-&gt;bindValue(&#39;:ユーザー&#39;,&#39;user_1&#39;,PDO::PARAM_STR);</code></pre></div>



<p>  プレース ホルダー「?」の場合  「?」が一つしかないので、idは１</p>



<p>  プレース ホルダー「:名前」の場合 、 一つしかないので、当然:ユーザーになります。 </p>



<p>今回はカラム「name」が「user_1」の値の取得</p>



<p>「user_1」なので文字列型を指定して、バインドしようと思います。</p>



<p>これで、SQLの構文と、変化する値が決まりました。</p>



<h3 class="wp-block-heading">  prepareのプレースホルダーを埋めるbindParam構文  </h3>



<p class="is-style-balloon_box">基本的にbindValueと同じです。違いの一つは下記でした。</p>



<p>違い① bindValueで与える値は、直接値を指定しても、変数を使用してもOKです。bindParamで与える値は変数のみです。</p>



<h4 class="wp-block-heading">違い①bindParamの場合、値は変数のみ</h4>



<p class="is-style-balloon_box">  プレース ホルダー「?」の場合 </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$user = &#39;user_1&#39;
$stmt-&gt;bindParam(1,$user,PDO::PARAM_STR);</code></pre></div>



<p class="is-style-balloon_box u-mb-ctrl u-mb-20">  プレース ホルダー「:名前」の場合 </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$user = &#39;user_1&#39;
$stmt-&gt;bindParam(&#39;:ユーザー&#39;,$user,PDO::PARAM_STR);</code></pre></div>



<p>bindParamの場合、値の箇所を変数にしないとエラーとなります。変数$userにしました。</p>



<h2 class="wp-block-heading">SQLリクエストをexecuteで実行する</h2>



<p>最後はDBにリクエストしなければ、値を抽出する事は出来ません。</p>



<p>prepareでSQLリクエストするには、下記構文が必要です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$変数-&gt;execute();</code></pre></div>



<p>executeは実行するメソッドです。これでprepareでSQL文をリクエスト可能です。</p>



<p>prepareでSQLするコードをまとめると、下記になりました。</p>



<h3 class="wp-block-heading">bindValueでSQL文を実行する</h3>



<p class="is-style-balloon_box">  プレース ホルダー「?」の場合  </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code> $stmt = $db-&gt;prepare(&quot;select score from users where name=?&quot;);
 $stmt-&gt;bindValue(1,&#39;user_1&#39;,PDO::PARAM_STR);
 $stmt-&gt;execute();</code></pre></div>



<p class="is-style-balloon_box">  プレース ホルダー「:名前」の場合  </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code> $stmt = $db-&gt;prepare(&quot;select score from users where name=:ユーザー&quot;);
 $stmt-&gt;bindValue(&#39;:ユーザー&#39;,&#39;user_1&#39;,PDO::PARAM_STR);
 $stmt-&gt;execute();</code></pre></div>



<h3 class="wp-block-heading"> bindParamでSQL文を実行する </h3>



<p class="is-style-balloon_box">  プレース ホルダー「?」の場合  </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$user = &#39;user_1&#39;
$stmt = $db-&gt;prepare(&quot;select score from users where name=?&quot;);
$stmt-&gt;bindParam(1,$user,PDO::PARAM_STR);
$stmt-&gt;execute();</code></pre></div>



<p class="is-style-balloon_box">  プレース ホルダー「:名前」の場合  </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$user = &#39;user_1&#39; 
$stmt = $db-&gt;prepare(&quot;select score from users where name=:ユーザー&quot;);
$stmt-&gt;bindParam(&#39;:ユーザー&#39;,$user,PDO::PARAM_STR);
$stmt-&gt;execute();</code></pre></div>



<p class="is-style-balloon_box">基本的にbindValueと同じです。残りの違いは下記でした。</p>



<p>違い② bindParamで実行する時にINT(数値型)を指定しても文字列になる。</p>



<p>違い②により、すべて文字列になります。今回は「user_1」で文字列でしたが、INT型の数値だったとしたらexecuteの箇所で文字列型になります。</p>



<p class="is-style-balloon_box">基本的にbindValueと同じです。残りの違いは下記でした。</p>



<p>違い③ bindValue もbindParamもexecuteで実行しますが、bindValue構文はその場で値が決まります。bindParamはexecuteする時に値が決まります。その前に変数の値が変われば、その値に変わるという事です。</p>



<p>違い③により、構文が下記だった場合</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$user = &#39;user_1&#39; 
$stmt = $db-&gt;prepare(&quot;select score from users where name=:ユーザー&quot;);
$stmt-&gt;bindParam(&#39;:ユーザー&#39;,$user,PDO::PARAM_STR);
$user = &#39;user_2&#39;
$stmt-&gt;execute();</code></pre></div>



<p>executeの箇所に行くまでに$user変数の値が変わっています。bindValueであれば「user_1」、bindParamであれば「user_2」がクエリされます。</p>



<p class="is-style-big_icon_check">値が変化する場合は、prepareを使用しましょう。</p>



<p class="is-style-big_icon_caution">bindParamを使用する時は、下記に注意しましょう。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>bindParam注意点</span></div><div class="cap_box_content">
<ul class="wp-block-list" id="block-f7556674-77e0-4884-9fb5-db832afc5a13">
<li>値が文字列になる</li>



<li>途中で変数に値が入ると、SQLも変化する</li>
</ul>
</div></div>



<h2 class="wp-block-heading"> SQL文を送るメソッド「query」 </h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-9-1024x576.jpg" alt="スクリプト" class="wp-image-3866" srcset="https://sugublog.org/wp-content/uploads/2021/08/script_0809-9-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-9-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-9-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-9.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="is-style-big_icon_check">次はqueryです。queryは値が変化しない場合に使用します。</p>



<p>SQLと値を分ける事もなく、query自体実行まで行います。</p>



<p class="is-style-balloon_box">prepareの工程は下記でした。</p>



<ol class="is-style-num_circle wp-block-list">
<li>SQL本文を決める（値が変化する）・・・メールで言う添付ファイル</li>



<li>変化する値を決める　・・・メールで言うパスワード</li>



<li>実行する　・・・メール送信</li>
</ol>



<p class="is-style-icon_info">queryは上記３つの工程を、１つで行います。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>queryのメリット・デメリット</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>手間がかからず、簡潔に完了する</li>
</ul>
</div></div>



<p>ではqueryの構文は下記になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt = $db-&gt;query(&quot;select score from users where name=user_1&quot;);</code></pre></div>



<p class="is-style-big_icon_check">値が変更しない、確定している場合にはqueryを使用しましょう。</p>


<div class="p-blogParts post_content" data-partsID="6113">
<div class="wp-block-columns">
<div class="wp-block-column">
<a href="https://px.a8.net/svt/ejp?a8mat=3TNJ87+8UIXF6+5EPG+65U41" rel="nofollow">
<img decoding="async" border="0" width="250" height="250" alt="" src="https://www29.a8.net/svt/bgt?aid=231205399535&#038;wid=001&#038;eno=01&#038;mid=s00000025234001035000&#038;mc=1"></a>
<img decoding="async" border="0" width="1" height="1" src="https://www18.a8.net/0.gif?a8mat=3TNJ87+8UIXF6+5EPG+65U41" alt="">
</div>



<div class="wp-block-column">
<a href="https://px.a8.net/svt/ejp?a8mat=3HP27C+14HHWY+3XAE+69P01" rel="nofollow">
<img decoding="async" border="0" width="300" height="250" alt="" src="https://www27.a8.net/svt/bgt?aid=211121256068&#038;wid=001&#038;eno=01&#038;mid=s00000018311001053000&#038;mc=1"></a>
<img decoding="async" border="0" width="1" height="1" src="https://www11.a8.net/0.gif?a8mat=3HP27C+14HHWY+3XAE+69P01" alt="">
</div>
</div>
</div>


<h2 class="wp-block-heading">PDOのprepareとqueryでSQL文を変数に格納するのまとめ</h2>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h3 class="wp-block-heading">prepareのまとめ</h3>



<p class="is-style-big_icon_check">prepareでSQL文を変数に格納する時は、値が変化する時</p>



<p class="is-style-balloon_box">  プレース ホルダー「?」の場合  </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code> $stmt = $db-&gt;prepare(&quot;select score from users where name=?&quot;);
 $stmt-&gt;bindValue(1,&#39;user_1&#39;,PDO::PARAM_STR);
 $stmt-&gt;execute();</code></pre></div>



<p class="is-style-balloon_box">  プレース ホルダー「:名前」の場合  </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code> $stmt = $db-&gt;prepare(&quot;select score from users where name=:ユーザー&quot;);
 $stmt-&gt;bindValue(&#39;:ユーザー&#39;,&#39;user_1&#39;,PDO::PARAM_STR);
 $stmt-&gt;execute();</code></pre></div>



<p>変化する場所は「?」か「:名前」で場所を確保、場所を「 プレース ホルダー」と呼ぶ。</p>



<p>変化する値は「bindValue」か「bindParam」で指定する。</p>



<p>bindParamの注意点は下記</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>bindParam注意点</span></div><div class="cap_box_content">
<ul class="wp-block-list" id="block-f7556674-77e0-4884-9fb5-db832afc5a13">
<li>値は変数で指定しないとエラーになる</li>



<li>値が文字列になる</li>



<li>途中で変数に値が入ると、SQLも変化する</li>
</ul>
</div></div>



<p>複数ある場合は、「?」の場合番号で、「:名前」の場合は名前で指定する。</p>



<p>データ型も指定できる。方は下記などあるが、STR（文字列）かINT（数値）がほとんど</p>



<ul class="wp-block-list">
<li>PDO::PARAM_STR　・・・デフォルトで文字列型</li>



<li>PDO::PARAM_INT　・・・数値型</li>



<li>PDO::PARAM_BOOL　・・・BOOLERN型</li>



<li>PDO::PARAM_NULL　・・・NULL型</li>



<li>・・・・などなど</li>
</ul>



<p>prepareは実行も必要。実行はexecuteで行う。</p>



<h3 class="wp-block-heading">queryのまとめ</h3>



<p class="is-style-big_icon_check">queryでSQL文を変数に格納する時は、値が変化しない時 </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt = $db-&gt;query(&quot;select score from users where name=user_1&quot;);</code></pre></div>



<p>この１行のみで完了。理由はbind不要（値が変化しない為）、実行もしてくれる為</p>



<h2 class="wp-block-heading">これからもっとPHPのスキルを上げる為には</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/08/school_08-4-1024x683.jpg" alt="school" class="wp-image-4090" srcset="https://sugublog.org/wp-content/uploads/2021/08/school_08-4-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/school_08-4-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/school_08-4-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/school_08-4.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>長くなりましたが、終わりです。難しいですが頑張って習得してください</p>



<p>短期間にスキルを上げて、転職したい、フリーランスになりたい場合はプログラミングスクールで学習するべきです。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/school_08-7-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/programing-school/">【2024年】プログラミングスクールおすすめランキング！評判と口コミ</a>
						<span class="p-blogCard__excerpt">プログラミングスクールで学習して、スキルを上げて年収を上げたい。フリーランスになるためにプログラミングを習いたい。 こういった願望を抱いている人も沢山います。&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>劇的にプログラミングスキルが上がります、現役エンジニアから業界の事も聞けるのでオススメです。</p>



<h2 class="wp-block-heading"> PDOのprepareとqueryでSQL文を変数に格納した後は </h2>



<p>格納した後はその値を取得したりも可能です。fetchやfetchAllを使用します。</p>



<p class="is-style-balloon_box">詳しい事は下記の「PDOのfetchやfetchAllで値を抽出する」の記事をご覧ください</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-3-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-pdo-fetch/">【PHP基礎】PDOのfetchやfetchAllで値を抽出する</a>
						<span class="p-blogCard__excerpt">fetchとはPHPでデータベースにアクセスして、値を抽出する時に使用するメソッドです。 fetchを使用しDBの値を抽出して、利用しましょう。 fetchを使いこなしDBを使用す&#8230;</span>					</div>
				</div>
			</div>
		</div>]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/php-base-prepare-and-query/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
