![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
mysqlで検索フォームを作成しています
入力してデータに該当したら検索結果が出るのですが
該当者がいないときはテーブルの表のみ出力してしまう
該当者なしと入力フォーム側に表示したいです
また ''''''を入力するとSQLになるのですが
mysql_real_escapeを使えば出なくなります
どうしたらいいですか
<html>
<body>
<?php
//データベースに接続
if (!$con = mysql_connect("localhost", "root", "admin")) {
echo "接続エラー" ;
exit ;
}
//データベースを選択
if (!mysql_select_db("db_test", $con)) {
echo "データベース選択エラー" ;
exit ;
}
//フォームで送られてきた条件を元にSELECT文を作成
$sql = "select * from tbl_test where (氏名 LIKE '%{$_GET['name']}%') or (住所 LIKE '%{$_GET['name']}%')";
//SELECT文を実行
if (!$res = mysql_query($sql)) {
echo "SQLエラー<BR>" ;
exit ;
}else{
}
//検索結果表示
echo "<table border=1>" ;
echo "<tr>
<th>番号</th>
<th>氏名</th>
<th>住所</th>
<th>操作</th>
</tr>" ;
while($row = mysql_fetch_array($res))
{
$ID = htmlspecialchars($row['番号']);
$NAME = htmlspecialchars($row['氏名']);
$ADDR = htmlspecialchars($row['住所']);
echo "<tr>
<td>$ID</td>
<td>$NAME</td>
<td>$ADDR</td>
<td><a href='edit.php?番号=$ID'>修正</a>
<a href='delete.php?番号=$ID'>削除</a></td></tr>";
if ($_GET) { // データがGETされていたら
$event = isset($_GET['event']) ? $_GET['event'] : ''; // 取得
}
}
echo "</table>" ;
//結果セットの開放
mysql_free_result ($res) ;
//データベースから切断
mysql_close($con) ;
?>
</body>
</html>
No.2ベストアンサー
- 回答日時:
>name欄にヒットしない文字があるときは該当者なし
iのついていないmysql関数はすでに利用禁止にちかい状態なので
利用するならもう誰もフォローしてくれない前提で
すべて自己解決するしかありません。
ですのでmysql関数の利用を前提の質問は公の掲示板ではしないでください
PDOでやるならこんな感じ?
<?PHP
$dsn = 'mysql:host=localhost; dbname=test';
$pdo = new PDO($dsn,$user,$password);
$name=isset($_GET['name'])?$_GET['name']:"";
$sql ="select * from tbl where ";
$sql.="`氏名` like concat('%',?,'%') ";
$sql.="or `住所` like concat('%',?,'%') ";
$stmt = $pdo->prepare( $sql);
$stmt->execute(array($name,$name));
$count = $stmt->rowCount();
if($count>0){
print "<table border=1>" ;
print "<tr>";
print "<th>番号</th>";
print "<th>氏名</th>";
print "<th>住所</th>";
print "</tr>";
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
print "<tr>";
print htmlspecialchars($row["番号"]);
print htmlspecialchars($row["氏名"]);
print htmlspecialchars($row["住所"]);
print "</tr>";
};
print "</table>" ;
}else{
print "no hit!";
}
?>
ありがとうございます
わかりました
PDOにしてやります
指摘いただいたソースにしたらすべてno hitになります
どこがいけないのでしょうか
すいません
No.1
- 回答日時:
ごめん、日本語としてわからない
>入力してデータに該当したら検索結果が出るのですが
>該当者がいないときはテーブルの表のみ出力してしまう
ヒットしないときはテーブルのヘッダー部分を表示したくないということ?
であれば戻り値が1以上あるときはテーブルを書いて、そうでなければ
書かないという分岐をいれるだけでは?
>該当者なしと入力フォーム側に表示したいです
>また ''''''を入力するとSQLになるのですが
>mysql_real_escapeを使えば出なくなります
まったく意味がわかりません
たぶん以下のどちらかだと思うんですが
→name欄になにも入れないときにはなにもヒットしないようにしたい
→name欄にヒットしない文字があるときは表示しないようにしたい
どっちでしょうかねぇ?
それと書くたびにライブラリを変えるのはもうやめようよ
どれでもできるんであれえばPDOで統一して例示して
返事遅くなり申し訳ありません
name欄にヒットしない文字があるときは該当者なしと表示したいです
どうすればいいですか?
PDOは少しややこしくって
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- PHP PHP MySql ページング 2 2022/09/20 06:38
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysql データ更新
-
検索結果にリンクを生成
-
接続ができません
-
phpとmysqlを使っています。
-
LIMIT で条件を満たしているの...
-
バージョン3.23.53からアップグ...
-
phpMyAdminについて
-
PHP+MySQL 接続できません
-
Float型の時の計算結果がおかしい
-
ADOのバージョンを確認する方法
-
MYSQL
-
PHP+ApacheでMySQLに接続できな...
-
SQLのVARCHARとVARCHAR2の違い
-
MYSQLで日本語が入力できない
-
”MySQL”以前は実行できたのです...
-
ページング実装で2ページ目以...
-
phpMyAdimnとコマンドラインで...
-
MySQLとEclipseの接続方法について
-
ODP.NETのバージョン確認
-
MySQLでエラーがでて前に進めま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォームから送信した値とMySQL...
-
PHPにてSQLから取得したデータ...
-
mysql sqlエラー
-
mysqlで作ったテーブルをphpで...
-
pdfファイルの管理システム
-
MySQLからのデータをページに1...
-
PHPでMySQLを使った検索のプロ...
-
mysql データ更新
-
プレースホルダを使った複数カ...
-
検索機能
-
MySQLでの順位付けについて
-
データを一括で処理する方法に...
-
PHPでMySQLを使った検索のプロ...
-
PDOでDB ページング
-
配列の要素でmysqlに問い合わせ
-
mysql+php リストボックスにつ...
-
MySQLでデータ表示
-
mysqlの置換について2
-
PHP+MYSQLで検索画面を作成し...
-
PHP&MYSQLでの検索システムにつ...
おすすめ情報