
以下のようなPHPのソースとMySQLのテーブルで、numberが0の行をhtmlで取得しようとしているのですが、検索窓に0を入れて検索しても取得できません。ちなみに、numberが1や2の行は取得することができます。
なぜnumberが0の行を取得できないかと、どうすればnumberが0の行を取得することができるか教えてください。
<PHPのソース>
<?php
$url = "localhost";
$user = "root";
$pass = "";
$db = "test";
$html = "";
// MySQLへ接続する
$link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");
// データベースを選択する
$sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。");
// クエリを送信する
$sql = "SELECT * FROM test";
$result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);
//結果セットの行数を取得する
$rows = mysql_num_rows($result);
?>
<form action="" method="post">
<input type="text" name="numberSearch" value="">
<input type="submit" value="検索">
</form>
<?php
//表示するデータを作成
if($rows && !empty($_POST['numberSearch'])){
while($row = mysql_fetch_array($result)) {
if ($row["number"] == $_POST['numberSearch']) {
$html .= "<tr>";
$html .= "<td>".$row["alphabet"]."</td><td>".$row["number"]."</td>";
$html .= "</tr>\n";
}
}
}else{
$msg = "データがありません。";
}
// MySQLへの接続を閉じる
mysql_close($link) or die("MySQL切断に失敗しました。");
?>
<html>
<head>
<meta charset="utf-8">
<title>numberSearch</title>
</head>
<body>
<table width = "200" border = "0">
<tr bgcolor="##ccffcc"><td>alphabet</td><td>number</td></tr>
<?= $html ?>
</table>
</body>
</html>
<データベースのテーブル>
alphabet number
A 0
B 1
C 2
D 1
E 1
F 0
G 1
No.2ベストアンサー
- 回答日時:
>if($rows && !empty($_POST['numberSearch'])){
$_POST['numberSearch']が"0"のときemptyで評価すると正となります
!emptyですから偽ですね
emptyは理論的な空ですから
空文字列""、整数の0、浮動小数点数の0、文字列の"0"、NULL、FALSE、
空の配列array()、変数が宣言されているが値が設定されていない変数
などすべて空とみなします。
http://php.net/manual/ja/function.empty.php
ちなみにSQLで参照するのにWHERE句に検索文字を入れない意味がわからない。
また古いmysql_系の関数を使い続けるはデメリットしかないので
リプレースを検討してください
ありがとうございます。
!emptyをissetに変えたらうまくいきました。
where句に参照文字を入れるというのは、sql文にwhere句を入れて実行するということですよね。そちらも今後使います。
mysql_~と続く関数は古いものなのですね。
今後それを使わない方法でやりたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlがインストールされている...
-
#1062 - '0' は索引 'PRIMARY' ...
-
LIMIT で条件を満たしているの...
-
テーブル名が可変の場合のクエ...
-
エラー 1068 (42000): 複数の主...
-
SQLでカラムを追加し、条件に合...
-
SQLです。下記の問合せを行うク...
-
データベースの接続に失敗して...
-
SQLを作ったのですがうまくいき...
-
このSQLあってますか?教えてく...
-
「第一回模試の3科目の各得点...
-
本を見ながらPHPを勉強している...
-
ある時間以内の利用者の抽出に...
-
SQLのサブクエリについて
-
【初歩】ラジオボタンをつかっ...
-
同一日に複数レコードがある場...
-
MAMP 99ドル約1.6万円 高い...
-
あってますか?SQL
-
WHERE `年月日` = '晴' OR `年...
-
SQLです教えてくださいお願いし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php データ削除
-
SQL1回で、平均と合計を両方出...
-
Arrayってなんですか?
-
PDOでMySQL接続した際の文字化...
-
PHP+MySqlでの検索
-
phpでcsvをhtmlにしたい
-
phpで以下のようにHTMLで出力さ...
-
phpからdbへアクセスし、レコー...
-
PHPからMySQLへの検索
-
php テーブルを作れない
-
テーブルの最後のレコードしか...
-
MySQLにHTMLタグを挿入したい
-
集計表が作れない
-
GROUP_CONCATで条件指定
-
PHP の ファイルアップロード
-
PHP+MySQL で検索結果を横並び...
-
MySqlに、\\'の2つを含む文字を...
-
php、PDOでの接続とクエリの記...
-
PHP + MySQLを使用して詳細画面...
-
MySQLで0で検索できない
おすすめ情報