検索しても何故か空白ページに

このQ&Aのポイント
  • $usersearchの値を受け取り、syouカラムに該当するデータがあれば表示するというソースのつもりですが、カラムに該当するワードをテキストボックスに入れても何故かsyou,byouのデータが表示されません。
  • hiddenで受け取った所、valueにきちんとワードは入ってました。
  • 探しているデータが見つからないため、空白ページが表示されています。
回答を見る
  • ベストアンサー

検索しても何故か空白ページに

$usersearch =$_POST['usersearch']; $query = "select * from kensaku2 where syou like '%{usersearch}%}'"; $result = mysql_query($query); while($row = mysql_fetch_array($result)){ echo $row['byou']; echo $row['syou']; } usersearchの値を受け取り、syouカラムに該当するデータがあれば表示するというソースのつもりですが、カラムに該当するワードをテキストボックスに入れても何故かsyou,byouのデータが表示されません。hiddenで受け取った所、valueにきちんとワードは入ってました。

noname#142312
noname#142312
  • PHP
  • 回答数3
  • ありがとう数1

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

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

{usersearch} を {$usersearch} にしてみる

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>PHPって簡単って聞きましたが、とんでもなく難しい あなたがそう感じたならそうなんでしょう 無理に難しいPHPをやるのではなく、もっと簡単な言語を探してください

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

PHPで使用している文字コードと、MySQL側で使用している文字コードがあわなければ 日本語検索はヒットしません。 まずは、アルファベットや数字などで同様にサーチができるかどうか確かめてみてください ちなみにユーザーから送られてくるデータは汚染されています >$usersearch =$_POST['usersearch']; >$query = "select * from kensaku2 where syou like '%{usersearch}%}'"; これはNGです、バリデートしてください $usersearch =$_POST['usersearch']; $usersearch =mysql_real_escape_string($usersearch ); $query = "select * from kensaku2 where syou like '%{usersearch}%}'";

noname#142312
質問者

お礼

PHPって簡単って聞きましたが、とんでもなく難しいですね。良書が少ないのも欠点

関連するQ&A

  • 単語ではなく複数語検索

    $usersearch =$_POST['usersearch']; $query = "select byou,syou from kensaku2 where syou like '%{$_POST['usersearch']}%' OR syou like '%{$_POST['usersearch']}%'"; $where_list = array(); $search_words = explode(' ', $usersearch); foreach ($search_words as $word){ $where_list[]= " syou like '%$word%'"; } $where_clause = implode('or',$where_list); if (!empty($where_clause)) { $search_query .= " WHERE $where_clause"; } $result = mysql_query($query); while($row = mysql_fetch_array($result)){ echo '<strong>ドリンク:</strong>' . $row['byou'] . '<br/>'; echo '<strong>野菜:</strong>' . $row['syou'] . '<br/>'; } 上記のものでテキストボックスに[コーラ お茶]等の複数のワードで検索し、その二つに該当するデータを取り出したいのですが、上手くいきません(単語でないと検索できません)。改変部分等御指摘下さい。

    • ベストアンサー
    • PHP
  • 買い物カゴについて

    ------------------------------------------------------------------ 買い物カゴに入れるページ ------------------------------------------------------------------ <?php session_start(); $_SESSION['gazou']=$gazou; if (!is_array($_SESSION['syou'])) { $_SESSION['syou'] = array(); } if (!is_array($_SESSION['kakaku'])) { $_SESSION['kakaku'] = array(); } ?> <body> <?php $id = $_GET['id']; $query = "select * from mo where id= '{$_GET['id']}'"; $result = mysql_query($query); $num_rows=mysql_num_rows($result); while($row = mysql_fetch_array($result)){ echo $syou = '<strong>商品名:</strong>'.$row['syou'].'<br/>'; echo $kakaku ='<strong>価格:</strong> '. $row['kakaku'] . '<br />'; echo'<form method="post" action="kato.php">'; echo'<input type="hidden" name="shou" value='.$row['syou'].'>'; echo'<input type="hidden" name="kakaku" value='.$row['kakaku'].'>'; echo'<input type="submit" name="button" id="button" value="カートに入れる" />'; echo'</form>'; ?> ------------------------------------------------------------------ 買い物カゴページ ------------------------------------------------------------------ <?php session_start(); echo '<strong>現在の買い物カゴの中身</strong></br>'; print_r($_SESSION['syou']) . '<br />'; print_r($_SESSION['kakaku']); ?> </head> <body> <?php mysql_query("SET NAMES eucjpms") or die("can not SET NAMES eucjpms"); $query = "select * from mo"; $result = mysql_query($query); ?> 現在大まかに言うとこんな感じに買い物カゴサイトを作成しています。(DB接続文は念のため削除) しかし、買い物カゴに一回入れて、もう一度違う商品を選ぶと、一回目の情報が消えてしまいます。 この情報を残し、買い物カゴに入れた商品情報を蓄積させるにはどうすれば良いでしょうか?? 概要としましては、買い物カゴページはID事に echo $syou = '<strong>商品名:</strong>'.$row['syou'].'<br/>'; echo $kakaku ='<strong>価格:</strong> '. $row['kakaku'] . '<br />'; の内容が変わるようになっていまして、その値をセッションし、一つの商品だけなら、買い物カゴページに上手く入りますが 二つ目を入れると情報が上書きされ、蓄積されないのです。どうかお力をお貸し下さい。

    • 締切済み
    • PHP
  • mysql_fetch_objectにデータを取得させたいのですが、うまく行きません。

    データ型 name varchar(30), item1 char(8), item2 int(6) で、テーブルが下記のようなっています。 | name |item1 | item2 | | taro | abcd | 53 | | taro | efghk | 48 | | taro | lmnp | 02 | while文で array_push($ydata, $row->item1) として $row = mysql_fetch_object($result) にデータを取得させたいのですが(スクリプト下記)、 $conn_id = mysql_connect("localhost","***","***") or die('Error connecting to MySQL'); mysql_select_db('***',$conn_id); $query ="SELECT item1,item2 from XYZ where name='taro'"; $result = mysql_query($query,$conn_id) or die($query.'failed('.mysql_error().')'); $ydata = array(); while($row = mysql_fetch_object($result)){   ←10行目 // array_push($ydata, $row->item1);      //  ここに下記の13、14行目を追記 } var_dump($row);echo"<br />\n"; var_dump($result); print_r($row); echo"<br />\n"; これでブラウザから見ると bool(false) resource(3) of type (mysql result) としか出ません。(19行目の結果は表示されません。) そのため 13: echo "item1",$row['item1'],"<br>"; 14 echo "item2",$row['item2'],"<br>"; と追記してブラウザから見ると、単に [ item1 ]とだけ表示されます。 10 行目を while($row = mysql_fetch_arrayt($result)){ に変えてブラウザから見ると item1abcd item253 imem1efghk item250 item1lmnp item258 bool(false) resource(3) of type (mysql result)   となります。 $row = mysql_fetch_object($result) にデータを取得させるにはどのように修正すれば良いのでしょうか?

    • ベストアンサー
    • PHP
  • 同じページで同じカラムを複数指定

    同じページに同じ複数カラム $query = "SELECT kg FROM daykg ORDER BY day desc LIMIT 1,1"; $result = mysql_query($query); while($row = mysql_fetch_array($result)){ $kg2 = $row['kg']; $kg3 ='$row['kg']'; これだと、当たり前ですが$kg2と$kg3に二行目のカラムの値が入ってしまいます。 $kg3にLIMIT 2.1の値を入れるにはどうしたら良いですか??

    • ベストアンサー
    • PHP
  • 検索結果の画像が表示されない

    <?php $con=mysql_connect(""); if(!$con){ echo ("MYSQLに接続失敗"); exit(); } else { echo ("#1=$con"); } mysql_query("SET NAMES eucjpms") or die("can not SET NAMES eucjpms"); $db=mysql_select_db(""); if(!$db) { echo ("DB選択失敗"); } else{ echo("DB選択OK!"); } $jyusyo=$_POST["jyusyo"]; $jyusyonum=array("豊岡市","養父市","朝来市","神戸市","姫路市"); $query = "select name,jyusyo,kakaku,gazou from ocdda where"; if($jyusyo != "") { $query = $query . " jyusyo like '%$jyusyo%' "; } $result = mysql_query($query); $num_rows=mysql_num_rows($result); if($num_rows== 0){ $message="該当データ無し"; } else $message=$num_rows ."件あります"; echo $message; while($row = mysql_fetch_array($result)){ // Loop through the array of score data, formatting it as HTML echo '<table>'; $i = 0; { // Display the score data echo '<tr><td class="scoreinfo">'; echo '<span class="kakaku">' . $row['kakaku'] . '</span><br />'; echo '<strong>会社名:</strong> ' . $row['name'] . '<br />'; echo '<strong>住所:</strong> ' . $row['jyusyo'] . '</td>'; if (is_file(GW_UPLOADPATH . $row['gazou']) && filesize(GW_UPLOADPATH . $row['gazou']) > 0) { echo '<td><img src="' . GW_UPLOADPATH . $row['gazou'] . '" alt="images" /></td></tr>'; } else { echo '<td><img src="' . GW_UPLOADPATH . 'ie.jpg' . '" alt="images" /></td></tr>'; } $i++; } echo '</table>'; mysqli_close($dbc); ?> <?php } ?> こちらでは表示されないのですが、 <?php require_once('appvars.php'); require_once('connectvars.php'); // Connect to the database $dbc = mysqli_connect(""); // Retrieve the score data from MySQL $query = "SELECT * FROM "; $data = mysqli_query($dbc, $query); // Loop through the array of score data, formatting it as HTML echo '<table>'; $i = 0; while ($row = mysqli_fetch_array($data)) { // Display the score data echo '<tr><td class="scoreinfo">'; echo '<span class="kakaku">' . $row['kakaku'] . '</span><br />'; echo '<strong>会社名:</strong> ' . $row['name'] . '<br />'; echo '<strong>住所:</strong> ' . $row['jyusyo'] . '</td>'; if (is_file(GW_UPLOADPATH . $row['gazou']) && filesize(GW_UPLOADPATH . $row['gazou']) > 0) { echo '<td><img src="' . GW_UPLOADPATH . $row['gazou'] . '" alt="image" /></td></tr>'; } else { echo '<td><img src="' . GW_UPLOADPATH . 'unverified.gif' . '" alt="Unverified kakaku" /></td></tr>'; } $i++; } echo '</table>'; mysqli_close($dbc); ?> こちらでは画像が表示されます。同じ階層でほぼ同じソースなのに何故前者のコードは画像が表示されないのでしょうか?

    • 締切済み
    • PHP
  • データベースから多次元連想配列でデータを取得できない

    PHP,MySQLともに初心者です いろんなサンプルプログラムを見て少しずつ進めているのですが、本3冊にネットで検索しても解決できないので・・・ function getSelect($field,$table,$where){ $query="select $field from $table $where;"; $result=$this->getResult($query); return $result; } $result=$db->getSelect("*","main","where myouji=$_POST[myouji]"); while($row = mysql_fetch_array($result[result])){ echo "$row[id]"; } こんな感じでmainテーブルからmyoujiに該当するrowを取得したのですが、 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in とエラーが出てしまいます。 他のところで、 $result=$db->getSelect("*","main","where id=$_POST[id]"); $rows=mysql_fetch_array($result[result]); としたときはエラーなく行くのですが、上のような多次元連想配列(下の方はidを重複させてないので必ずrowが1つ・・・1次元連想配列?)になるとエラーになってしまいます。 これはどう修正すればいいのでしょうか。 たったこれ1行のつまづきで4時間くらいかかってます。 誰か助けてください

    • ベストアンサー
    • PHP
  • MYSQLからデータを取り出して表示したい

    度々お世話になります。解説書を見ながらMySQLのデータを取り出して表示させようとしているのですが、理解に苦労しています。その本のやり方は以下の通りです。 *サーバ接続済み *データベース選択済み *使用するテーブル名:joke *使用するコラム:joketext $result = @mysql_query('SELECT joketext FROM joke'); if (!$result) { exit('<p>Error performing query: ' . mysql_error() . '</p>'); } while ($row = mysql_fetch_array($result)) { echo '<p>' . $row['joketext'] . '</p>'; } 1.$resultの中にはTURE/FALSE以外に何か入っているのでしょうか?多分データベースのデータがストックされていくのだと思うのですが、この変数には二種類のデータ(true/falseと実際のデータ)が入っているという解釈でよろしいでしょうか? 2.mysql_fetch_arrayですが、これが6行目でやっていることは、$resultからデータを取り出して行に配列していくということでよろしいでしょうか? 3.完全に解らないのは、$row['joketext']の部分で、いったいぜんたいこれは何をやっているんでしょうか?変数の後に[ ]が出てくるパターンはこの本では初めてなのですが、解説されていません。 4.echo '<p>' . $row['joketext'] . '</p>'; の部分で、このピリオドはどういった役割をしているのでしょうか?これも本では初めて出てくるのですが、解説されていなくて困っています。 たくさんの質問になりますが、ひとつでも解る方おられましたら、どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • テーブルのデータをarray (array (***, ***)) の形式で取得したい

    id、氏名、年月日(date)、点数(tensu)の列を持つテーブルseiseki があります。 <?php $conn_id = mysql_connect("localhost","root","*****") or die('Error connecting to MySQL'); mysql_select_db('******',$conn_id); $query ="SELECT date,tensu from seiseki; $result = mysql_query($query,$conn_id) or die($query.'failed('.mysql_error().')'); $date = array(); $tensu = array(); while($row = mysql_fetch_array($result)){ $date[] = $row['date']; $tensu = $row['tensu']; } print_r($date); echo "<br/>\n";      ←15行目 print_r($tensu); echo "<br/>\n";      ←16行目 ?> これをブラウザで見ると、 Array ( [0] => 2009-05-01 [1] => 2009-06-07 [2] => 2009-07-24 ・・・・・・ ) Array ( [0] => 80 [1] => 75 [2] => 90 ・・・・・・・ ) となります。 15,16行目をコメントアウトして print_r($row[“date”],[“$tensu”]); とするとエラーになります。 array (array (2009-05-01, 80), array (2009-06-07, 75 ), array (2009-07-24 , 90)・・・・・・・ ); の形式でデータを取得するにはどのようにすれば良いでしょうか?

    • ベストアンサー
    • MySQL
  • phpのページ送りについて

    既出の質問で大変恐縮ですが、どうしても自分の理解力が足りないため、教えてください。 phpでページ送りの機能をつけようと思います。 100件だけ取り出して、あとを 前のページへ|1|2|3|…|次のページへ のようにするのはどうしたらよいのでしょう。 いま組んでいるベースを書きます。 初心者で勉強をしているのですが頭が悪く、できれば下記に合わせて作っていただけますと幸いです。 ================================================================================== $sql2 = "select * from creater"; $result2 = mysql_query($sql2); $rows2 = mysql_num_rows($result2); if($rows2 == 0){ echo "<p>該当データがありません。</p>"; } else { while($row2 = mysql_fetch_array($result2)){ echo "<p><a href=\"creater.php?createrid=",$row2["createrid"],"\">"; echo $row2["creater"]; echo "</a>"; echo "</p>"; } } ================================================================================== 実際のページは ttp://www.game-minzoku.jp/all-creater2.php です。 何とぞ、よろしくお願いいたします。

    • 締切済み
    • PHP
  • MySQLのテーブルのコラム名の取得方法

    MySQLのテーブルを一つのオブジェクトと考えるようなクラスを作ろうとしています。 このクラスの中で、テーブルの各コラム(またはフィールド名)を要素にした配列を作りたいのですが、やり方がわかりません。 自分がある程度調べてみたところでは、MySQLシェルの中では、次のように入力すると添付した画面のようにコラム名の一覧が表示がされるのですが これらのコラム名をPHPスクリプト内にある配列に格納出来ません。 mysql> SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME="transaction"; まだ作成の途中ですが、自分のスクリプトは以下に掲載したようなものです // columnList initialize というブロックが該当部分です。ほかの部分はとりあえず働いてます。 どなたかお知恵を貸していただけないでしょうか。お願いいたします。 <?php class Table{ private $DBname; private $tableName; private $columnList=array(); private $dataArray=array(array()); private $totalRecords; //=================================================== public function __construct($database, $tablename) //=================================================== { $this->DBname=$database; $this->tableName=$tablename; $cxn=mysqli_connect("localhost","root","rsi2018","$database") or die("cannot connect to database"); // $columnList initialize $query="SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=\"$tablename\""; $result=mysqli_query($cxn, $query) or die("query failed :1"); $row=mysqli_fetch_array($result); foreach($row as $col){ $this->columnList[]=$col; } // $totalRecords initialize $query="select count(*) as count from $tablename"; $result=mysqli_query($cxn, $query) or die("query failed :3"); $row=mysqli_fetch_array($result); $this->totalRecords=$row["count"]; // $dataArray initialize for($i=0; $i < $this->totalRecords; $i++){ $query="select * from $tablename where id=($i+1)"; $result=mysqli_query($cxn, $query) or die("query failed :2"); $this->dataArray[$i]=mysqli_fetch_assoc($result); } }// end constructor //=================================================== public function showPart($id) //=================================================== { $data=$this->dataArray[$id - 1]; /* foreach($data as $key=>$value){ echo "$key = $value</br>"; } */ echo "ID: ".$data['id']."</br>"; echo "partNumber: ".$data['partNumber']."</br>"; echo "partName: ".$data['partName']."</br>"; echo "simpleName: ".$data['simpleName']."</br>"; echo "stock: ".$data['stock']."</br>"; echo "location: ".$data['location']."</br>"; }// end function //=================================================== public function getTotalRecords() //=================================================== { return $this->totalRecords; }// end function //=================================================== public function showColumnList() //=================================================== { foreach($this->columnList as $field){ echo "$field "; } echo "</br>"; }// end function }// end class ?>

    • ベストアンサー
    • PHP