PHPの変数を使ったMYSQL条件検索について

このQ&Aのポイント
  • PHP初心者によるMYSQL条件検索の方法とは
  • MYSQLのカラムがINT型ではない場合のエラー対処法
  • インジェクション対策とエラーが発生する原因
回答を見る
  • ベストアンサー

PHPの変数を使ったMYSQL条件検索について

PHP初心者です。どなたか詳しい方ご教示下さい。かれこれ半日調べてもわかりません。 フォームに入力したキーワードを使って条件検索を行い、MYSQLに登録した必要なレコードを取り出す作業を行いたいのですが「Unknown column 'henkan' in 'where clause'」と出て表示されません。 カラムの方がINT型なら表示されるのですが、TXT型なら上記エラーが出ます。 色々調べたらインジェクション対策(?)で「'」と「”」の入れ方が悪く、「`」を変数の前後に入れれば良いかと思い試してみましたが「Parse error: syntax error, unexpected~」と出てエラーが出ます。 他にも色々「'」「"」の位置を変更して見ましたがエラーが出ます。どなたか詳しい方、お教え下さい。 よろしくお願い致します。 ・PHPプログラム <?php mysql_connect('localhost','root','') or die(mysql_error()); mysql_select_db('mydb'); mysql_query('SET NAMES UTF8'); $recordSet = mysql_query('SELECT * FROM manyu where syurui ='.$_POST['free']); $data = mysql_fetch_assoc($recordSet) or die(mysql_error()); echo $data['keyword']; ?> ・テーブルとカラム id syurui keyword ___ _________ __________ 6 henkan 変換 →「変換」と出てくる予定でした。

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5078/13267)
回答No.1

$recordSet = mysql_query("SELECT * FROM manyu where syurui ='".mysql_escape_string($_POST['free'])."'");

miruko999
質問者

お礼

出来た!!ありがとうございます!!!本当助かりました!!! 行き詰まっていたので苦しかったのですが開放されました。ほんとありがとうございました!!

関連するQ&A

  • PHPとMySQLで配列で検索する方法

    プログラミング初心者です。 PHPとMySQLでデータベースを作成しています。 配列に格納したデータを既に登録してあるデータに参照して、日付と題名が同じものは登録しないようにしたいと思います。 以下がソースなのですが、2行目でエラーがでてしまいます。そうすればよいかご教授お願いします。 for($j=1; $j<$i; $j++){ $query ="select * from data where date=" . $date2[$j]; $result = mysql_query($query) or die(mysql_error()); $query2 ="select * from data where sub=" . $sub[$j]; $result2 = mysql_query($query2) or die(mysql_error()); if(mysql_num_rows($result) != 0 && mysql_num_rows($result2) != 0){ //登録しない } else{      //データベースに登録

    • 締切済み
    • 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
  • phpでデーターベース編集

    phpを独学し始めた初心者です。 よろしくお願いします。 以下のphpファイルを実行すると エラーが出ないにもかかわらず、 データーベースの表示で確認すると 『item_name』に『もも』という文字が入っていません。 その他はphp通りデーターが挿入されます。 なぜでしょうか? (環境)------------------------------------- phpエディターでphpファイルをつくり phpMyAdminでデーターベースを編集してます。 ローカルホストです。 --------------------------------------------- <?php mysql_connect('localhost', 'root', '') or die(mysql_error()); mysql_select_db('mydb') or die(mysql_error()); mysql_query('SET NAMES UTF8'); mysql_query ('INSERT INTO my_items SET maker_id=1, item_name="もも", price=480, keyword="缶詰,ピンク,甘い", sales=0, created="2010-10-10", modified="2012-05-05"') or die(mysql_error()); echo 'データー挿入完了'; ?> どうぞよろしくお願いします。

  • Dreamweaverで検索フォーム

    はじめまして。 DreamWeaverを使ってPHP+MySQLでWEBアプリを作っております。 ログ表示部分まで完成して、検索用のhtmlフォームから条件を指定して検索結果のみをSELECTして表示させたいのですが、「and検索やor検索」ができなくて困っています。 他に似たような質問をされている方もいますが、書いたソースが異なっているように見受けたので、投稿させていただきました。 宜しくお願いします。 検索フォーム <form method="post" action="view.php"> <input type="text" name="key"> <input type="submit" name="search" value="検索"> </form> ログ表示PHP(view.php) //検索キーワードの初期値を設定する $colname_Recordset1 = "%"; if (isset($_POST['key'])) { $colname_Recordset1 = (get_magic_quotes_gpc()) ? $_POST['key'] : addslashes($_POST['key']); } $sql = "SELECT * FROM shoplist"; if(strlen($colname_Recordset1) > 0){  $colname_Recordset2 = str_replace(" ", " ", colname_Recordset1);  $array = explode(" ", $colname_Recordset2);  $where = "where ";  for($i=0; $i<count($array); $i++){   $where .= "address like '%$array[$i]%'";   if($i < count($array)-1){    $where .= " and ";   }  } } mysql_select_db($database_connTest, $connTest); $Recordset1 = mysql_query($sql.$where, $connTest) or die(mysql_error()); $row_Recordset1 = mysql_fetch_assoc($Recordset1); $totalRows_Recordset1 = mysql_num_rows($Recordset1);

    • ベストアンサー
    • PHP
  • PHPでの検索機能がうまく動きません

    PHPでの検索機能が動かなくて困っています。 <form>で入力した値を、MySQLのWHEREで条件付けて取り出したいのですがうまくいきません....。 最終的に、 1、formに検索ワードを入力 2、DBから条件にあったレコードを持ってくる 3、持ってきた値を表示 という機能にしたいのですが....。 --- --- --- --- --- --- --- --- --- --- --- --- <?php //データベースに接続 mysql_connect('xxx', 'xxx', 'xxx') or die(mysql_error()); mysql_select_db('xxx'); mysql_query('SET NAMES UTF8'); //フォームで送られてきた条件を元にSELECT文を作成 if (!empty($_POST['nm'])) { $q = $_POST['nm']; $sql = 'select * from test_tb where name like "%$q%"'; $record = mysql_query($sql) or die(mysql_error()); } ?> <html> <body> <form action="" method="post">    名前:<input type="text" name="nm">    <input type="submit" name="exec" value="検索"> </form> <?php while($row = mysql_fetch_assoc($record)): ?> <?php echo $row['id']; ?> <?php echo $row['name']; ?> <?php endwhile ?> </body> </html> --- --- --- --- --- --- --- --- --- --- --- --- エラーは表示されないのですが、結果も表示されません。 さまざまなサイトや他の方の質問、MySQLやPHPの本を参考にしたのですが うまくいかなかったのでご質問させていただきました。 プログラミング初心者の上、はじめての質問で不備があると思いますが、 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpのエラーについてです

    mysql上のデータをphpでブラウザに表示するコードを書いています。 下記のプログラムを実行した所 Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampplite\htdocs\shop\index.php on line 18 というようなエラーが表示されます。 本の通りに進めているので間違っていないはずなんですが・・ どこが成立していないのでしょうか??? <?php mysql_connect('localhost', 'root', '') or die(mysql_error()); mysql_select_db('mydb'); mysql_query('SET NAMES UTF8'); $recordSet = mysql_query('SELECT m.name, i.* FROM makers m, my_ items i WHERE m.id=i.maker_id ORDER BY id DESC'); ?> <table width="100%"> <tr> <th scope="col">ID</th> <th scope="col">メーカー</th> <th scope="col">商品名</th> <th scope="col">価格</th> </tr> <?php while ($table = mysql_fetch_assoc($recordSet)) { ?> <tr> <td><?php print(htmlspecialchars($table['id'])); ?></tb> <td><?php print(htmlspecialchars($table['name'])); ?></tb> <td><?php print(htmlspecialchars($table['item'])); ?></tb> <td><?php print(htmlspecialchars($table['price'])); ?></tb> </tr> <?php } ?> </table>

    • ベストアンサー
    • PHP
  • phpでmysqlの結果がresouceにならない

    いつもお世話になります。初心者で何も知識がないまま進めておりますが故に行き詰っております。詳しい方からのアドバイスお願い致します。 今回はphpでmySQLの結果をmysql_fetch_assoc() で展開しようと思ったら以下の文章が出てきました。 mysql_fetch_assoc() expects parameter 1 to be resource, object given in・・・ 調べてみると変数の型(この場合は$resouce)がresourceではないとのことで、戻ってきた型を調べてみるとarrayで戻ってきているようです。 問題となっている箇所は以下の単純なクエリだとは思うのですが、何が原因か分からず。。。 $sql = "SELECT * FROM テーブル名;"; ※テーブル名には変数がありケースバイケースでテーブル名が変わります $resouce = $mysqli -> query($sql) or die(mysqli_error()."エラー"); while ($data = mysql_fetch_assoc($resouce)) { ・・・ お分かりの方がいらっしゃいましたら、ぜひよろしくお願い致します。 •ソフトウェア: MySQL •ソフトウェアバージョン: 5.0.67 •php5

    • ベストアンサー
    • PHP
  • PHP+MySQLで文字化けします

    PHPでMySQLに接続して以下のように テーブルの作成・そのテーブルにInsertをすると文字化けします。 PHPサーバーの文字コードはEUC-JP、MySQLの文字コードはlatin1です。 PHPのバージョンは5.04でMySQLのバージョンは4.1.20です。 無料レンタルサーバーなので詳細な設定は変更できません。 <?php // データベースに接続し、選択する mb_language('Japanese'); mb_internal_encoding('UTF-8'); mb_http_output('UTF-8'); $link = mysql_connect('localhost',"user","password") or die('Could not connect: ' . mysql_error()); echo 'Connected successfully'; mysql_select_db('user') or die('Could not select database'); mysql_query("SET NAMES UTF-8",$link); // SQL クエリを実行する $name = 'test'; $query = "CREATE TABLE IF NOT EXISTS `$name` ( `id` varchar(50) primary key, `name` varchar(50), `pw` varchar(50) );"; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); $query = "INSERT INTO $name (id, name) VALUES('test', 'テスト');"; $mojicode = mb_detect_encoding($query); $query = mb_convert_encoding($query, "UTF-8", "$mojicode"); $result = mysql_query($query) or die('Query failed: ' . mysql_error()); // HTML に結果を出力する echo "<table>\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "\t<tr>\n"; foreach ($line as $col_value) { echo "\t\t<td>$col_value</td>\n"; } echo "\t</tr>\n"; } echo "</table>\n"; // 結果セットを開放する mysql_free_result($result); // 接続を閉じる mysql_close($link); ?> まだまだPHP、MySQL共に技術が未熟なため 説明不足な部分が多々あるかと思いますがご教授お願いします。

    • ベストアンサー
    • PHP
  • PHP&MYSQLでの検索システムについて

    PHP&MYSQLでチェックボックスを使用した絞込み検索システムを制作しようと思っています。 検索機能の内容は □居酒屋□レストラン□美容室 のチェックボックスに複数また、いずれかにチェックをして該当されたお店の写真(一枚)と説明文を1ページ20店舗ずつ表示したい思っています。 現在、MYSQLにデータベース、テーブルをつくりそれをチェックボックス用のHTMLとデータ取得用のPHPでMYSQLに接続、データを読み出すことはまでは出来たのですがチェックボックスで絞込みが出来ない状態で作業がとまっています。どなたかにご教授お願いしたいと思い質問させていただきました。よろしくお願い致します。 また、画像はどこに格納しておくのが良い方法なのでしょうか? ソースは select.html <body> <form name="form" action="search.php" method="post"> <input name="key[1]" value="居酒屋" type="checkbox" />居酒屋<br> <input name="key[2]" value="レストラン" type="checkbox" />レストラン<br> <input name="key[3]" value="美容室" type="checkbox" />美容室<br> <p><input value="検索開始" type="submit" /></p> </form> </body> search.php <?php $link = mysql_connect('localhost', 'root', 'pass'); if (!$link) { die('接続失敗です。'.mysql_error()); } $db_selected = mysql_select_db('mysqltest', $link); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } if($debug) print_r($HTTP_POST_VARS); //クエリ生成 $query = "SELECT id,name,state FROM personal_info "; mysql_set_charset('utf8'); //検索条件生成 //名前 if(!empty($name)) { $value = addslashes($value); $where = "value = '$value' && "; } if(!empty($where)) { $where = substr($where, 0, -4); $where = "WHERE " . $where; } $query .= $where; if($debug) { print "<BR><BR>"; print $query; } $result = mysql_query($query); $num_rows = mysql_num_rows($result); if($num_rows == 0) $message = "該当するデータはありませんでした"; else $message = $num_rows . "件ヒットしました"; ?> 検索結果<br> <?=$message?> <table border=0> <? while($row = mysql_fetch_assoc($result)): ?> <tr><td><?=$row[name]?></td></tr> <? endwhile; ?> </table> <a href="select.html">再検索</a> 環境 XAMPP 1.3.0.1 PHP 5.2.9.9 MYSQL 5.1 また、この検索システムに関する書籍やサイトがありましたら教えて頂けたらうれしいです。

  • phpでmysqlで作成したdbを表示したい。

    現在phpのプログラムの学習を行っています。、 phpmyadminで作成したデータベースを読み込もうとしているのですが、うまくいきません。 参考書やサイトも参考にしたのですが、警告が出ています。 よくわからなくなってきましたので、教えていただきたいです。 ------------------------------------------------------------------------------- ・実行結果 Resource id #31Resource id #40 接続ID: 選択の成否: 結果ID: 行数: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\job\job.php on line 45 ------------------------------------------------------------------------------- ・ソース <?php /*$con = mysql_connect('localhost','root','root') or die("接続できません"); print "接続に成功しました。"; mysql_close($con);*/ $url = "localhost"; $user = "root"; $pass = "***"; $db = "***"; // MySQLへ接続する $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。"); // データベースを選択する $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。"); // クエリを送信する $sql = "SELECT * FROM t01prefecture"; $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); //結果保持用メモリを開放する mysql_free_result($result); echo "$link"; echo "$sdb"; echo "$result"; echo "$rows"; echo "<br>"; echo "接続ID:<?= $link ?><br />"; echo "選択の成否:<?= $sdb ?><br />"; echo "結果ID:<?= $result ?><br />"; echo "行数:<?= $rows ?><br />"; $recordSet = mysql_query('SELECT * FROM my_items'); while($data = mysql_fetch_assoc($recordSet)){ /*このあたりが45行目 */ echo $data['item_name']; /* ここの値を変える*/ echo '<br>'; } // MySQLへの接続を閉じる mysql_close($link) or die("MySQL切断に失敗しました。");

    • ベストアンサー
    • PHP

専門家に質問してみよう