• ベストアンサー

PDO 「fetch」。2件あったらどうなるのでし

「必要条件を満たすレコードが1件しかない」ことを確認したい際に、「fetch」を使えるのでしょうか。 例えば、条件を満たすレコードが2件あった場合、「fetch」を使っても1件しか取れないので、確認できない、ということになるのでしょうか? ▽PHP: PDOStatement::fetch - Manual   http://php.net/manual/ja/pdostatement.fetch.php

  • re999
  • お礼率61% (476/777)
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

例などを見ればわかると思いますが, ・1回目のfetchでFALSEが返った場合は0件 ・2回目のfetchでFALSEが返った場合は1件 ・2回のfetchでFALSEが返らなかった場合は2件以上 です。 fetchは内部的に持っているカーソルを次の行に進めてその行のデータを返します。 そもそもCOUNT(*)で条件に合う行数を取得するのではだめなのでしょうか……。

re999
質問者

お礼

回答ありがとうございました

関連するQ&A

  • PDOStatement::fetchについて

    現在phpを学習しており、mysqlにPDOでデータベース接続をしています。 前ページからGETで取得した変数A($varA)があり、 SELECT文で「テーブルA(tableA)のカラムA(columnA)の値が取得した変数Aと一致するもの」という検索条件を指定し、 条件に該当するレコードのカラムB(columnB)の値を取得し、変数B($varB)に代入したいのですが、 $sth = $dbh->prepare("SELECT columnB FROM tableA WHERE columnA = :varA"); $sth ->bindParam(':varA',$varA); $sth ->execute(); まではネットで調べて記述できたのですが、 fetchには沢山の種類があるので、 データ変数B($varB)に該当カラムの値を代入する場合にどれを使ったらよいか分かりませんでした。 1つのカラムの値を取り出すにはどのfetchを利用したら良いのでしょうか? ちなみにcolumnBに入っているのは数字ではなく文字列です。 ご回答、よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpマニュアルの検索機能が機能しない件

    ど素人がphpを勉強中です。 関数の意味を調べたい時、 http://www.php.net/manual/ja/indexes.php 上記、関数マニュアル一覧から、Ctrl+Fの検索で、例えば『implode』で検索してみても、 http://php.net/manual/ja/function.implode.php このページが見つかりません。 わざわざGoogleから検索しないと出てきません。 とても不便です。 どうしたらいいでしょうか?

    • ベストアンサー
    • PHP
  • selectによるレコード取得結果の有無で条件分岐

    PHP(PDO)とMySQLでプログラムを組んでいます。 DBからselectでレコードを取得するのですが、もし該当するレコードが一件もない場合は404のエラーページにリダイレクトさせたいのですが、その場合の条件式は if(!$stmt->fetch()){ } で大丈夫でしょうか?一応下にプラグラムの抜粋を載せてみました。 他に何かよい方法がございましたら教えていただきたいです。 よろしくお願いします。 sql="SELECT・・・・"; $stmt=$db->prepare($sql); $stmt->bindParam(':・・',・・・']); $stmt->execute(); if(!$stmt->fetch()){ header("Location:・・・・"); } $stmt->execute(); while($row=$stmt->fetch()){ }

    • ベストアンサー
    • MySQL
  • mysql_fetch_objectの書き方を教えて下さい。

    PHP5.1.6を使用しています。 次のスクリプトを書きましたが、データが取得できません。 $conn_id = mysql_connect("localhost","***","***") or die('Error connecting to MySQL'); mysql_select_db('***',$conn_id); $query ="SELECT abcd,efgh from XYZ where name='taro'"; $result = mysql_query($query,$conn_id) or die($query.'failed('.mysql_error().')'); $ydata = array(); $xdata = array(); while($row = mysql_fetch_array($result)){  ← 11行目 array_push($ydata, $row->efgh);   ← 12行目 array_push($xdata, $row->abcd);   ← 13行目 } エラーログを見ると、 PHP Notice: Trying to get property of non-object in /***/***/****.php on line 12 PHP Notice: Trying to get property of non-object in /***/***/****.php on line 13 となっています。 var_dump($row) 句を入れ、ブラウザから見ると、当然ながら(?)bool(false) と表示されます。 11行目の mysql_fetch_array を mysql_fetch_object に入れ換えて while($row = mysql_fetch_object($result)){ としても結果は変わりません。 リファレンスマニュアルやサンプルを参照して種々手直ししましたが、今ひとつ正解に辿り着けません。 データを取得して配列に入れるには、どのように修正すれば良いか、教えて頂けませんでしょうか。

    • ベストアンサー
    • PHP
  • DB検索について

    (1)PHPにてSQLをコールしてテーブルから情報の取得を行いたいのです。  $cmnd = "select * from table_a where id=01";を実行し(fetch使用)  仮に15件セレクトされたとすると、抽出された15件は  プログラム内のどこに格納されるのですか? (2)また、そのレコードを順じ処理する場合において、終了条件はどの様に  判定したら良いでしょうか?  DB:oracle

    • 締切済み
    • PHP
  • mysql_fetch_arrayでレコードが入っていないものも取得したい。

    こんにちは。mysql_fetch_array()でテーブルに入っていないレコードも取得したいのですが、どのようにすればよろしいでしょうか。 テーブルはこんな感じです。 仕事 NUM  1   1  2   1  4   1  5   1 その上で、PHPはこのようになっています。 //データの選択 $sql = "SELECT job, COUNT(*) as num FROM org GROUP BY job"; $res = db_query($sql, $conn); //データの出力 while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $array = array( "job"=>$row["job"], "num"=>$row["num"] ); array_push($array, array( "job"=>$row["job"], "num"=>$row["num"] )); $tmp[] = $array; } return $tmp; このPHPのあと、Smartyに値を渡し、.tplで「A職(○件)」というようなことをやっています。 このときにフィールド「仕事」のレコード「3」は1つもデータが登録されていない状態です。そのためか、現状ではNULL値として扱われるようで、配列$rowに値を渡せず、.tplのほうではデータが表示されません。そこで、レコード「3」にデータを登録せずに、NULL値ではなく、例えば0などの値を渡したいと思います。 どのようなコードを書けば値を渡せるのでしょうか。よろしくお願いします。

    • 締切済み
    • PHP
  • mysql_fetch_array の関数について

    はじめまして、お世話になります。 php/SQL共に初心者レベルなのですが、ご指導ください。 mysql_fetch_array のSQLの結果が複数件ある場合なのですが、 参考書通り $sql = "select * from category where parent_id = '0' order by category_name"; $result = mysql_query( $sql ); while ( $category = mysql_fetch_array( $result ) ) echo "<a href=result.php?category_id=${category['category_id']}>${category['category_name']}</a> | "; とコーディングしたものの、 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/アカウント名/public_html/アカウント名/topbar.php on line 26 とエラーが表示され困っています。 参考書にもエラーの詳細など記載れていませんし、他の媒体での色々と答えを探してはみたものの意味がわかりません。 解る方いらっしゃいましたら是非ご指導ください。 宜しくお願いします。

    • 締切済み
    • PHP
  • pg_fetch_allはMySQLにおいてどのコマンドになるのでしょう?

    初心者です pg_fetch_allはPostageSQLのコマンド(?)ですが、 これはMySQLの場合、どれにあたるのでしょうか?PHPファイル上に書くときの表記のしかたを教えてください。

    • ベストアンサー
    • PHP
  • PHPでgrepする件について

    PHPでgrepっぽいようなことをしたいと考えています。 I.「キーワード」を含む文を拾ってくる。 II.「タグ」で囲まれている数字を拾ってくる。 例えば、 I.では「北海道」を含む文章を拾ってきたいと考えています。 (日本語です。キーワードは英語ではありません) II.ではxmlで表記されている<~~>98765</~~>という98765を拾ってきたいと考えています。 http://jp2.php.net/manual/ja/function.preg-grep.php を参考にしたのですが、ダメでした。 よろしければ、助言いただけないでしょうか?

    • ベストアンサー
    • PHP
  • php pdo データベース

    前に書き込んだのが状況がわかったので再度書きます update.phpでGETで取った番号のデータを表示します 番号は主キーなので変更できないように表示のみにします update.phpのフォームをuptate2.phpに送ります <?php $ID = htmlspecialchars($_GET['番号']); $pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin"); $st = $pdo->prepare("SELECT * FROM tbl_test WHERE 番号=?"); $st->execute(array($ID)); $row = $st->fetch(); $NAME = htmlspecialchars($row['氏名']); $ADDR = htmlspecialchars($row['住所']); ?> <form action="update2.php" method="post"> 番号<br> <?php echo $ID ?><br> <input type="hidden" name="ID" value="<?php echo $ID; ?>"> 氏名<br> <input type="text" SIZE = "50" NAME="NAME" value="<?php echo $NAME ?>"><br> 住所<br> <input type="text" SIZE = "130"NAME="ADDR" value="<?php echo $ADDR ?>"><br> <input type="submit"> </form> アップデ-トphp update2.php <?php $pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin"); $st = $pdo->prepare("UPDATE tbl_test SET 氏名=?,住所=?WHERE 番号=?"); $st->execute(array($_POST['ID'],$_POST['NAME'], $_POST['ADDR'])); ?> レコードを修正しました。 今の現状 エラーが出ないでレコードを修正しました。と表示されるがレコードが修正されていない どこがいけないと思いますか?

    • ベストアンサー
    • PHP

専門家に質問してみよう