<?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>fetch &#8211; スグブログ</title>
	<atom:link href="https://sugublog.org/tag/fetch/feed/" rel="self" type="application/rss+xml" />
	<link>https://sugublog.org</link>
	<description>ブログ運営について発信中</description>
	<lastBuildDate>Tue, 05 Dec 2023 12:36:49 +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>fetch &#8211; スグブログ</title>
	<link>https://sugublog.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【PHP基礎】PDOのfetchやfetchAllで値を抽出する</title>
		<link>https://sugublog.org/php-base-pdo-fetch/</link>
					<comments>https://sugublog.org/php-base-pdo-fetch/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Mon, 09 Aug 2021 14:44:07 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<category><![CDATA[fetch]]></category>
		<category><![CDATA[fetchAll]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=3907</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-3-1024x682.jpg" class="webfeedsFeaturedVisual" /></p>fetchとはPHPでデータベースにアクセスして、値を抽出する時に使用するメソッドです。 fetchを使用しDBの値を抽出して、利用しましょう。 fetchを使いこなしDBを使用すればコードも綺麗になり、やれる事が大幅に [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-3-1024x682.jpg" class="webfeedsFeaturedVisual" /></p>
<p>fetchとはPHPでデータベースにアクセスして、値を抽出する時に使用するメソッドです。</p>



<p>fetchを使用しDBの値を抽出して、利用しましょう。</p>



<p><strong><span class="swl-marker mark_orange">fetchを使いこなしDBを使用すればコードも綺麗になり、やれる事が大幅にアップします。</span></strong></p>



<p>私もfetchを使用してから、コードが単純で綺麗になりました。</p>



<p>あなたもfetchを使いこなしてPHPで出来る事を増やしましょう！</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">
<ul class="wp-block-list">
<li>DBの値を抽出する「fetch」について、理解できる</li>



<li>fetchを使用して抽出した結果を見る事が出来る</li>



<li>DBの値を抽出して、やりたい事の幅を広げる事が出来る</li>
</ul>
</div></div>



<h2 class="wp-block-heading">PDOのfetchやfetchAllで値を抽出する</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>


<h3 class="wp-block-heading">抽出するfetchメソッドとは</h3>



<p>fetchとは「抽出する」という意味があります。</p>



<p class="is-style-big_icon_caution">fetchを使用するには、DBに接続してSQL文でデータを変数に格納する必要があります。</p>



<h3 class="wp-block-heading">fetchで抽出する為に、DBアクセスとSQL構文を準備する</h3>



<p>DBにアクセスするPDOを使用して、新しいインスタンスを作成し、変数に格納します。</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;
 $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();
 } catch(PDOException $e){
 echo &#39;DB接続失敗&#39;;
}
?&gt;</code></pre></div>



<p>上記のコードの詳しい説明は、下記の「DBにアクセスする時の構文を理解する」と「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-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>

<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 class="is-style-icon_info">「users」というテーブルの「score」が「44」の「name」を抽出しようとしています。</p>



<h3 class="wp-block-heading">テーブルを参照する</h3>



<p>今回下記のテーブルを作成したとします。</p>



<p class="is-style-balloon_box">DB名：mydatabase テーブル名：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><tr><td>3</td><td>user_3</td><td>44</td></tr><tr><td>4</td><td>user_4</td><td>44</td></tr></tbody></table><figcaption class="wp-element-caption">mydatabaseのusersテーブル</figcaption></figure>



<p>今回はusersテーブルに、4人のユーザーが登録しているデータベースを使用します。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span> メソッドのfetchには2種類あります。 </span></div><div class="cap_box_content">
<ol class="is-style-num_circle wp-block-list">
<li>fetch</li>



<li>fetchAll</li>
</ol>
</div></div>



<h2 class="wp-block-heading">fetchとfetchAllの違い</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/programing_0812-12-1024x683.jpg" alt="script" class="wp-image-3960" srcset="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-12-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/programing_0812-12-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/programing_0812-12-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/programing_0812-12.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="is-style-big_icon_check">fetchとfetchAllの違いは、 初めに抽出された１つを取得するか、全てを抽出するかです！</p>



<p>fetchとfetchAllの基本構文は下記です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$変数= $prepareかqueryで実行した変数-&gt;fetch(PDO::定数);</code></pre></div>



<p class="is-style-icon_pen">PDO::定数は後で説明します。</p>



<h3 class="wp-block-heading">fetch</h3>



<p class="has-border -border02">初めに抽出された１つを取得する。</p>



<p>先程のコードにfetch構文を追記して、ページにアクセスして見ましょう。</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();
 $score44 = $stmt-&gt;fetch(PDO::FETCH_ASSOC);
 print_r($score44);
 } 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接続成功
Array ( [name] =&gt; user_3 )</code></pre></div>



<p>配列になって変数に格納されています。</p>



<p>Keyが「name」で値が「user_3」という配列が取得できました。</p>



<p class="is-style-big_icon_caution">今回はfetchなので「user_3」のみ取得している事に気をつけて下さい。</p>



<h3 class="wp-block-heading">fetchAll</h3>



<p class="has-border -border02">当てはまるものすべてを取得する。</p>



<p> 先程のコードの「fetch」を「fetchAll」変更して、ページにアクセスして見ましょう。 </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();
 $score44 = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);
 print_r($score44);
 } 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接続成功
Array ( [0] =&gt; Array ( [name] =&gt; user_3 ) [1] =&gt; Array ( [name] =&gt; user_4 ) )</code></pre></div>



<p>配列0にKey「name」値「user_3」と1に Key「name」値「user_4」が格納されています。 </p>



<p class="has-border -border02">fetchでは最初の１つが配列として取得されました。fetchAllでは当てはまる全てが配列として取得されました。</p>



<h2 class="wp-block-heading">fetchとfetchAl使用時のPDOメソッド</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>先程のコードでfetchメソッドを実行した時にPDO::定数がありました。よく使用するのは下記ぐらいです。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span> PDO::定数 </span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>PDO::FETCH_BOTH　・・・デフォルト</li>



<li>PDO::FETCH_ASSOC</li>



<li>PDO::FETCH_NUM</li>



<li>PDO::FETCH_COLUMN</li>



<li>PDO::FETCH_KEY_PAIR</li>
</ul>
</div></div>



<p>今回は「PDO::FETCH_ASSOC」としましたが、今度は「PDO::FETCH_BOTH」と変更して実行して見ます。</p>



<h3 class="wp-block-heading"> PDO::FETCH_BOTH</h3>



<p class="is-style-balloon_box">fetchで定数PDO::FETCH_BOTHを行います。</p>



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



<p>先程の結果に0番目に値が「user_3」の配列が追加されています。</p>



<p class="is-style-balloon_box"> fetchAllで定数PDO::FETCH_BOTHを行います。 </p>



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



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



<p>先程の結果の0番目の配列に0番目で値「user_3」、1番目の配列に0番目で値「user_4」が追加されています。</p>



<p> 初めに行ったASSOCの方は、Keyがカラムになっています。</p>



<p class="has-border -border02">二回目のBOTHの方は、Keyがカラムと数字と両方配列に入ってますね。</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>



<h3 class="wp-block-heading">  PDO::FETCH_NUM </h3>



<p class="is-style-balloon_box">ではfetchで定数PDO::FETCH_NUMに変更して見ましょう。もうお分かりですね。</p>



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



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



<p>Keyの「name」がなくなり、数字のみになっています。0番目に値が「user_3」の配列になっております。</p>



<p class="is-style-balloon_box"> 続いてfetchAllで定数PDO::FETCH_NUMに変更して見ましょう。 </p>



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



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



<p>0番目の0番目に値「user_3」、1番目の0番目に値「user_4」が入った配列を抽出していますね。</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;">PDO::FETCH_COLUMN</span></h3>



<p class="is-style-balloon_box"> では定数PDO::FETCH_COLUMNに変更して見ましょう。 </p>



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



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



<p> 配列ではなく、値のみ入っていますね。</p>



<p class="is-style-balloon_box"> fetchAllの定数PDO::FETCH_COLUMNに変更して見ましょう。  </p>



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



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



<p> (PDO::FETCH_NUM)に比べてスッキリしていますね。ユーザー２人が一次元配列で入っています。</p>



<p class="is-style-icon_pen">先程は２次元配列でした。</p>



<h3 class="wp-block-heading">PDO::FETCH_KEY_PAIR</h3>



<p class="is-style-balloon_box">定数PDO::FETCH_KEY_PAIRに変更して、ページにアクセスして見ましょう。</p>



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



<h3 class="wp-block-heading">エラー発生</h3>



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



<h4 class="wp-block-heading"> PDO::FETCH_KEY_PAIRエラーの原因とは？</h4>



<p>例外が出ました。 定数PDO::FETCH_KEY_PAIR はKeyもDBの値にします。</p>



<p class="is-style-big_icon_caution">先程はカラムと番号がKeyになってましたが、今回はKeyも指定しなければエラーになります。</p>



<h4 class="wp-block-heading"> PDO::FETCH_KEY_PAIRのエラーを解決するには？</h4>



<p>SQL構文でKeyと値を指定しましょう。つまりカラムから２つ選びましょう。</p>



<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/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>今回はKeyを「id」にします。下記のコードに変更してください。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt = $db-&gt;prepare(&quot;select id,name from users where score=?&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>$score44 = $stmt-&gt;fetch(PDO::FETCH_KEY_PAIR);</code></pre></div>



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



<p>idがKey、nameが値の配列になっていますね。</p>



<p class="is-style-balloon_box"> fetchAllでFETCH_KEY_PAIRを行います！</p>



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



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



<p> 先程指定した「id」と「name」がペアになっています。idがKey、nameが値のデータが２つ配列になっています。</p>



<h2 class="wp-block-heading">配列から値を取り出す</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-11-1024x576.jpg" alt="script" class="wp-image-3959" srcset="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-11-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/programing_0812-11-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/programing_0812-11-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/programing_0812-11.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="is-style-icon_info">１次元配列や２次元配列になったりしていたので、おさらいしながら配列の取り方も見ておきます。</p>



<h3 class="wp-block-heading">fetchの定数PDO::FETCH_BOTHから値を表示して見ます。</h3>



<p>fetchメソッド構文は下記でした。</p>



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



<p> fetchのPDO::FETCH_BOTHメソッドの結果は下記でした。</p>



<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>



<p>phpファイルに下記のコマンドを追記して、ページを更新して見ます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>echo $score44[name];</code></pre></div>



<h3 class="wp-block-heading">配列から抽出でエラー発生</h3>



<p>下記のエラーが出ました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-html" data-lang="HTML"><code>Fatal error: Uncaught Error: Undefined constant &quot;name&quot; in　・・・・・・</code></pre></div>



<p>エラー構文をみるとnameという定数がありません。というメッセージが出てます。</p>



<h3 class="wp-block-heading">エラーの原因</h3>



<p>nameは文字列なので、「”」で囲わなければいけないですね。</p>



<h3 class="wp-block-heading">エラーを解決する</h3>



<p>では先程のコードを下記に変更して、ページを更新して見ます。</p>



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



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>コードの説明</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>nameは文字列なので「&#8221;」で囲みました</li>



<li>文字列をつなげる為に「.」を付けました</li>



<li>改行したいので「&#8221;&lt;/br&gt;&#8221;」をつけました</li>



<li>下にはもう一つの配列の番号のコードも付け足しました、こちらは番号なので「&#8221;」は不要です</li>
</ul>
</div></div>



<p>更新すると、結果は下記になりました。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="462" height="122" src="https://sugublog.org/wp-content/uploads/2021/08/image-19.png" alt="" class="wp-image-4014" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-19.png 462w, https://sugublog.org/wp-content/uploads/2021/08/image-19-300x79.png 300w" sizes="(max-width: 462px) 100vw, 462px" /></figure>
</div>


<p class="is-style-icon_info">結果は思い通りのものになりました。</p>



<h3 class="wp-block-heading"> fetchAllの定数PDO::FETCH_BOTHから値を表示して見ます。 </h3>



<p> fetchAllメソッド構文は下記でした。 </p>



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



<p>fetchAllメソッドの結果は下記でした。</p>



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



<p> phpファイルに下記のコマンドを追記して、ページを更新して見ます。 </p>



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



<p class="is-style-icon_announce">fetchAllのPDO::FETCH_BOTHの場合は、２次元配列になっています。</p>



<p>[0][&#8220;name&#8221;]は初めのKeyが「name」で「user_3」になります。[1][0]は２番目の中の０番目で「user_4」になります。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="446" height="129" src="https://sugublog.org/wp-content/uploads/2021/08/image-20.png" alt="" class="wp-image-4017" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-20.png 446w, https://sugublog.org/wp-content/uploads/2021/08/image-20-300x87.png 300w" sizes="(max-width: 446px) 100vw, 446px" /></figure>
</div>


<p class="is-style-icon_info">想定通りの結果となりました。</p>



<p class="is-style-big_icon_caution">fetchAllの場合２次元配列になるので、表示の仕方に注意してください。</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のfetchやfetchAllで値を抽出するのまとめ</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-4-1024x576.jpg" alt="スクリプト" class="wp-image-3872" srcset="https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-4.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>今回はPDOでDBに接続して、データベースの値をfetchを使用して抽出して見ました。</p>



<p>抽出した後の表示のやり方と注意点もお伝えしました。</p>



<p><strong><span class="swl-marker mark_orange">fetchやfetchAllを使用してデータベースを有効活用出来たら楽しいですし、やれる事が増えます。</span></strong></p>



<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>


<p>PDOの定数を指定する事で、様々な取得の仕方があるので、状況に応じて変えて見て下さい。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/php-base-pdo-fetch/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
