• ベストアンサー

検索したときなにも無かった場合

プログラム初心者です sqlをselectして結果がなかった場合、mysqli_fetch_assocを使うより先に判定する場合はどうすればいいのでしょうか? if(ここがわかりません){ echo '検索結果がありません'; } while($row = mysqli_fetch_assoc($recordSet)){ print $row['id']; } よろしくお願いします

  • flash0
  • お礼率97% (297/306)
  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

mysqli はよく知らないけどこれが 0 かどうかで判定できるかな? http://www.php.net/manual/ja/mysqli-result.num-rows.php

flash0
質問者

お礼

回答ありがとうございます mysqli_num_rowsでやってみたら判定できました

その他の回答 (1)

noname#244856
noname#244856
回答No.2

バッファクエリ(デフォルト)を用いている場合のみmysqli_num_rows関数が使えます。 mysqli_num_rows http://www.php.net/manual/ja/mysqli-result.num-rows.php バッファクエリと非バッファクエリ http://www.php.net/manual/ja/mysqlinfo.concepts.buffering.php

flash0
質問者

お礼

おかげで判定できました。ありがとうございました

関連するQ&A

  • 検索機能

    プログラム初心者です 検索機能をつける方法を教えてください 質問1 like検索のLIKE “%value%”でもインデックスを使う方法はありますか?それともインデックスを使わなくても十分速いのでしょうか? 質問2 複数キーワードをスペースをはさんで検索してきた場合、どうやって処理すればいいのでしょうか? and検索のみです 例えばこんな文字の場合です $search = 'ああ いい うう'; $recordSet2 = mysqli_query($link,sprintf('SELECT * FROM table where name LIKE "%%%s%%"', $search )); while($row = mysqli_fetch_assoc($recordSet2)){ ?> <tr> <td><?php print $row['name']; ?></td> </tr> <?php } ?> よろしくお願いします

    • ベストアンサー
    • PHP
  • SQLの結果が返ってこない

    PHP+mysqlで以下のようなSQL文で処理を行ったのですがデータが返ってきません。 $sql = 'SELECT * FROM books WHERE id=3'; $recordSet = mysql_query($sql); if(mysql_fetch_assoc($recordSet)){ while ($table = mysql_fetch_assoc($recordSet)) {        処理     } } mysqlの画面で SELECT * FROM books WHERE id=3 を入力してみるとしっかりと結果が返ってきます。 ちなみに1行目を、違うテーブルの $sql = 'SELECT * FROM podcast WHERE code=3 ORDER BY dcdate DESC LIMIT 0,3'; にしてみると、データが表示されます。 2日間かけてずっと試行錯誤してみたのですが、完全に行き詰ってしまったので、何か考えられる原因はありませんでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP,MYSQLで特定例を表示する場合、

    PHP、MYSQLで特定例を表示する場合のsql文が分かりません。 データーベースmeibo no | name | sex | age | 1 | 一郎 | 男 | 20 | 2 | 一子 | 女 | 22 | 3 | 二郎 | 男 | 25 | 4 | 二子 | 女 | 27 | 女のみを表示したい場合を考え以下のようなコードを作りましたが上手くいきません。 <?php //データーベース接続 require_once('../require/dbcon.php'); //件数の表示 $recordSet = mysql_query('SELECT COUNT(sex) AS record_count FROM meibo WHERE sex(女)'); $data = mysql_fetch_assoc($recordSet); echo '<b>','※ 女性メンバー','</b> ('.$data['record_count'].' 人のデーターがあります。)<br /><br />'; //テーブルセット $recordSet = mysql_query('SELECT sex FROM meibo WHERE sex(女)'); while ($table = mysql_fetch_assoc($recordSet)) { echo $table['no']; echo $table['name']; echo $table['age']; } エラーでは $data = mysql_fetch_assoc($recordSet); と、 while ($table = mysql_fetch_assoc($recordSet)) のラインが出るのですが 何が悪いのか良く分かりません。 私の考えではsql文が悪いのではないかと思うのですが、どなたかお教えくださいませ。

    • ベストアンサー
    • PHP
  • 実行結果に連番を振る方法

    こんにちは。 以下を実行すると、ブラウザに結果x, 結果x, 結果x・・・と表示されます。 xの部分を1, 2, 3・・・とさせたいのですが、うまくできません。 ご教示頂けませんか? 宜しくお願い致します。 <?php //データベース接続 $server = "127.0.0.1"; $userName = "root"; $password = "password"; $dbName = "tweet01"; $mysqli = new mysqli($server, $userName, $password,$dbName); if ($mysqli->connect_error){ echo $mysqli->connect_error; exit(); }else{ $mysqli->set_charset("utf-8"); } $sql = "SELECT * FROM tweet_tbl"; $result = $mysqli -> query($sql); //クエリー失敗 if(!$result) { echo $mysqli->error; exit(); } //レコード件数 $row_count = $result->num_rows; //連想配列で取得 while($row = $result->fetch_array(MYSQLI_ASSOC)){ $rows[] = $row; } //結果セットを解放 $result->free(); // データベース切断 $mysqli->close(); ?> <!DOCTYPE html> <html> <body> <table border='1'> <tr><td>結果</td></tr> <?php foreach($rows as $row){ ?> <tr> <td><a href='wxyz.php?id=$row['id']; ?'>結果x</a></td> </tr> <?php } ?> </table> </body> </html>

    • ベストアンサー
    • PHP
  • mySQLで結果が無いときの処理

    $sql = "select * from test "; $sql .= "where id='".$_POST["id"]."' and pwd='".$_POST["pwd"]."'"; $result = mysql_query($sql); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { if($row){ $msg = "OK"; } } としていますが、NGのときってどういう風にしたらいいのでしょうか? 基本的なことですみませんが、教えてください。

    • ベストアンサー
    • PHP
  • PHP mysql_fetch_assocについて

    いつもお世話になっております。早速ですが下記のソースにて、SQLのクエリではレコードが2行(phpMyAdminで確認)出てきます。何故whileが繰り返してくれないのか分からず悩んでおります。($counterも2で止まる)長文でお手数ですがどうかお力添えの程お願い致します。(文字数制限にてSQL文は省略してます) $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<form method=\"POST\" action=\"edit.php\">"; echo "<table class=\"login mb10\" border=\"1\" cellspacing=\"0\" width=\"650\">"; echo "<tr><td class=\"form\">日にち</td><td class=\"form\" colspan=\"3\">".$date."</td></tr>"; $counter = 1; //これが繰り返してくれない while($stadium = mysql_fetch_assoc($res)){ //2回目以降はtableタグを付加 if($counter > 1){echo "<table>";} echo "<tr><td>試合順</td><td colspan=\"2\">".$counter."試合目</td><td>対象</td></tr>"; echo "<tr><td>対戦カード・時間</td><td>"; //チーム情報 $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<select name=\"team1_".$counter."\">\n"; while($team1 = mysql_fetch_assoc($res)){ echo "<option value=\"".$team1["team_id"]."\""; if($row["team1"] == $team1["team_id"]){echo " selected";} echo ">".$team1["team_name"]."</option>\n"; } echo "</select>対"; $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<select name=\"team2_".$counter."\">\n"; while($team2 = mysql_fetch_assoc($res)){ echo "<option value=\"".$team2["team_id"]."\""; if($stadium["team2"] == $team2["team_id"]){echo " selected";} echo ">".$team2["team_name"]."</option>\n"; } echo "</select></td>\n"; //時刻を反転させる $date_s = strrev($stadium["schedule_time"]); $minute_s = strrev(substr($date_s,0,2)); $hour_s = strrev(substr($date_s,2,2)); echo "<td><select name=\"hour_".$counter."\">"; $hour = 8; while($hour < 22){ echo "<option value=\"".$hour."\" "; if($hour_s == $hour){echo "selected";} echo ">".$hour."</option>"; $hour ++; } echo "</select>時"; echo "<select name=\"minute_1\">"; $minute = 0; while($minute < 60){ echo "<option value=\"".$minute."\" "; if($minute_s == $minute){echo "selected";} echo ">".$minute."</option>"; $minute = $minute + 15; } echo "</select>分</td>\n"; //チェック echo "<td rowspan=\"2\"><input type=\"checkbox\" name=\"delete_".$counter."\" value=\"1\"></td></tr>\n"; echo "<tr><td class=\"form\">審判・場所</td><td>"; //チーム情報 $sql = "SELECT * 省略"; $res = mysql_query($sql,$conn); echo "<select name=\"umpire1_".$counter."\">"; while($umpire1 = mysql_fetch_assoc($res)){ echo "<option value=\"".$umpire1["team_id"]."\" "; if($umpire1["team_id"] == $stadium["umpire1"]){echo "selected";} echo ">".$umpire1["team_name"]."</option>"; } echo "</select>&"; $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<select name=\"umpire2_".$counter."\">"; while($umpire2 = mysql_fetch_assoc($res)){ echo "<option value=\"".$umpire2["team_id"]."\" "; if($umpire2["team_id"] == $stadium["umpire2"]){echo "selected";} echo ">".$umpire2["team_name"]."</option>"; } echo "</select></td>\n"; //球場データ $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<td>"; if($counter == 1){ echo "<select name=\"stadium_".$counter."\">"; while($sta = mysql_fetch_assoc($res)){ echo "<option value=\"".$sta["stadium_id"]."\" "; if($sta["stadium_id"] == $stadium["stadium"]){echo "selected";} echo ">".$sta["stadium_name"]."</option>"; } echo "</select>"; }else{ echo "&nbsp;"; } echo "</td></tr>\n"; echo "</table>"; $counter++; } echo "<table>変更するテーブル</table>"; echo "</form>";

    • ベストアンサー
    • PHP
  • 関数(list)の戻り値を他の関数(base)の引数に渡したいんですが

    関数(list)の戻り値を他の関数(base)の引数に渡したいんですが、どうすればいいでしょうか? /****list.php****/ <?php function list($id){ // DB接続 open(); $sql = "SELECT * FROM table WHERE id = $id"; $result = mysql_query($sql); // 実行結果判定 if(!$result){ $res = 9; }else{ while ($row = mysql_fetch_assoc($result)){ $moji .= $row['name']; $moji .= $row['mail']; } echo $moji; $res = 0; } return $res; } ?> /****main.php****/ <?php ・ ・ list($id); ・ ↓$err_cdにlistの戻り値を入れ、$err_msgには戻り値が0なら「正常終了」,9なら「SQLエラー」などを入れるようにしたい。 base($err_cd,$err_msg); ・ ?>

    • ベストアンサー
    • PHP
  • 検索結果表示について

    こんにちは。お世話になっております。 あるテーブルからの検索結果をPHPにてブラウザ上に表示させる際のコードに関しての質問なのですが、これまで、検索したいレコードが1つである事を条件にした場合、以下のコードのどちらが適切なのでしょうか? if($rows==1){ while($row = mysql_fetch_array($result))   ・   ・ echo $row["id"]; または、 if($rows ==1){ $id = mysql_result($result, 0, "id"); echo $id; どちらもブラウザでは同じ結果が返ってくるかと思われますが、諸先輩方々からのアドバイスを頂ければと、投函させて頂きました。 お忙しい中恐縮ですが宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • PHPの書き方について

    PHPを独学で勉強中で、気になったことがあるので質問させていただきます。 最初に買った書籍とその次に買った書籍で書き方が違うところがあるので、普通はどちらでやるのか、また、使い分けがあるのかが知りたいです。 たとえば、データベースを1行ずつ取り出す処理で、1冊目では $pdo = new PDO($dnsinfo,$USER,$PW); $sql = "SELECT * FROM ○○"; $stmt = $pdo->prepare($sql); $stmt->execute(null); $res = ""; while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ $res .= $row['△△'] ."," .$row['□□'] ."<br>\n"; } ・・・というコードがあったのですが、2冊目には同じような処理が mysqli_fetch_assoc()を使って書かれていたり、 接続の仕方も1冊目では「new PDO($dnsinfo,$USER,$PW);」を使って書かれているのが、2冊目では「mysqli_connect()」になっていたり、 他にも同じような処理がよく似たコードで書かれています。 調べてみると、PHP5.5から1冊目のやり方になった・・・ような記事を見つけたのですが、どちらの本もPHP5.5と書いてあり、いまいちよくわかりません。 詳しい方いらっしゃいましたらご教示お願いいたします。

    • ベストアンサー
    • PHP
  • 「mysqli_fetch_assoc」で、プリペ

    「mysqli_fetch_assoc」で、プリペアドステートしたいのですが、「mysqli_stmt_fetch」との違いなどがよく分かりません。 下記リンク先、「test4.php」のコードを、「mysqli」手続き型用に書き換えていただけないでしょうか? ▽データの取得(SELECT) - MySQLへの接続 - PHP入門   http://www.phpbook.jp/tutorial/mysql/index6.html <希望内容> ・「mysql」→「mysqli」 ・「mysqli」手続き型 ・SELECT idの「id」部分を動的対応(プリペアドステート) ・可能なら(?)、「mysqli_stmt_fetch」ではなく、「mysqli_fetch_assoc」利用

    • ベストアンサー
    • PHP

専門家に質問してみよう