• 締切済み

間違ってますか?

お世話になってます。 下記のような記述を書いています。 $key = $_POST["inpnum"]; $shopno = $_POST["number"]; $dbHandle = mysql_connect("localhost"); if ($dbHandle == False) { print ("can not connect db\n"); exit; } $db = "test"; $sql = "select * from tab1 where note= '$shopno'"; $rs = mysql_db_query($db,$sql); $fields = mysql_num_fields($rs); $rows = mysql_num_rows($rs); if ($rows > 0) {~ このままでは、上手く行くのですが、 $sql = "select * from '$key'where note= '$shopno'"; とテーブル名を変数に変えると、エラーが出ます。 基本的な事のような気がしますが、何度やっても上手く行かないので、お力添え宜しくお願いします。

  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

回答No.1

> $sql = "select * from '$key'where note= '$shopno'"; これだと、$key のあと、スペースないけど、 それが原因では。

logomark
質問者

お礼

ご回答有難うございます。 その後、色々チャレンジした結果何とか思うように動かせました。因みにスペースの問題ではありませんでした。お騒がせしてすいません

関連するQ&A

  • エラーの意味

    $con=mysql_connect(localhost,***,***); mysql_select_db("shopdb"); $passwd=mysql_real_escape_string($_POST['passwd']); $email=mysql_real_escape_string($_POST['email']); $name=mysql_real_escape_string($_POST['name']); $sql="select * from users where email={$email} and passwd={$passwd}"; $_SESSION['name']=$name; $rs=mysql_query($sql); if(mysql_num_rows($rs)>0){ $_session['login']=1; header("localhost:". "top.php"); exit; } を入力したら Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource が出てしまいました・・・ なんのエラーでしょうか?

    • ベストアンサー
    • PHP
  • MySQLからCSVファイルのダウンロード

    はじめまして。 MySQLのデータをCSVファイルに書き出しダウンロードする場合に、 文字コードをSJISに変換してダウンロードしたいのですが、下記のソースに何を付け加えればできますでしょうか? お手数ですが、何方かご教授よろしくお願いします。 //tab1表から全行を取り出す $sql = "select * from tab1"; if(!$rs = mysql_query($sql)) { print "error=".mysql_errno()."<br>"; exit; } $fields = mysql_num_fields($rs); $rows = mysql_num_rows($rs); //取り出した行数分繰り返す for($i=0;$i<$rows;$i++){ //列数分繰り返す for($j=0;$j < $fields;$j++){ //列の内容出力する print(mysql_result($rs,$i,$j)); //最終列でない場合は カンマ を出力する if ($j < $fields - 1) print(","); } print("\n"); }

    • ベストアンサー
    • PHP
  • php5+Mysql5による条件検索とその表示方法が上手く動作しないのでどなたかご指摘をお願いします。

    phpにて条件検索を行っているのですが、『where』以下を$変数にすると動かなくなってしまいます。記述部分で何が間違っているのでしょうか? 以下記述↓ <? $link = db_con(); //←DB接続 $sql = "select * from tbl where id = '" . mysql_real_escape_string( $_GET['id'] ) . "' and name like '%" . mysql_real_escape_string( $_GET['name'] ) . "%' "; $result = mysql_query( $sql ) ; $num_rows = mysql_num_rows( $result ); ?> ここまで↑ を下記のように『where』以下を$変数にして代入 $変数した場合↓ <? $where .= "id = '" . mysql_real_escape_string( $_GET['id'] ) . "' and name like '%" . mysql_real_escape_string( $_GET['name'] ) . "%' "; $link = db_con(); //←DB接続 $sql = "select * from tbl where $where "; $result = mysql_query( $sql ) ; $num_rows = mysql_num_rows( $result ); ?> ここまで↑ どなたかご指摘をお願いします。

  • ログイン認証で

    ログイン認証で <? session_start(); $con=mysql_connect(localhost,***,***); mysql_select_db("***"); $passwd=addslashes($_POST['passwd']); $email=addslashes($_POST['email']); $name=addslashes($_POST['name']); $sql="select * from users where email='{$_POST['email']}' and passwd='{$_POST['passwd']}'"; $_session['name']=$name; $rs=mysql_query($sql); if(mysql_num_rows($rs)>0){ $_session['login']=1; header('location:'. "top.php"); exit; } mysql_close($con); ?> <html> <head> <title> </title> </head> 認証失敗 <br> <a href="login.php"> 戻る</a> <body> と入力したのですが、 emailとpasswdに合ったnameを違うページに表示したいのに、それができないんです・・・ ようこそ<? $_SESSION['name']?> さん<br> どこかおかしなところありますか?

    • ベストアンサー
    • PHP
  • 検索結果件数を取りたいです。

    環境は、php + mysqlで作ってます。 DBのテーブルに格納されている文字列をセレクト文で取り出して 対象件数が何個あるか知りたいです。 DBのテーブルに格納されている文字列はURLの文字列が入ってます。 例えば http://www.yahoo.com/ 確認のため、予め $obj = "http://www.yahoo.com/"; として、DBに入っているデータを書いておいて以下を実行しました。 $sql="select * from geturl where url=".$obj; $datas = mysql_query($sql , $db ); $num = mysql_num_rows($datas); echo $num; 結果: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/~~ といったエラーが出てしまいました。。。 今度は、予め数字を入れておいて実行してみました。 入れた文字は「123」です。 $obj = "123"; $sql="select * from geturl where url=".$obj; $datas = mysql_query($sql , $db ); $num = mysql_num_rows($datas); echo $num; 結果:正しく対象件数がブラウザに表示されてました。 数字だと正しく処理されて、英文字だとエラーになる原因がわかりません。。 アドバイスいただければ幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 複数のフィールドにまたがる、ワード検索

    お世話になっております。 1つのテーブル内にある複数のフィールドを対象とした、DB内の検索スクリプトを以下の様に作っているのですが、半角などで区切り、いくつかのキーワードを入力すると、検索結果が返ってきません。 こちらの過去ログ等でも色々調べ、参考になりそうなものも数多くありましたが、スキルが乏しく解決に結びつける事が出来ずにいる次第です。 お忙しい中恐縮ですが、コードを記述するに当り、考え方などを踏まえた使用する関数などをご教授頂けたら幸いです。 ・・・結果的にお手数をお掛けしてしまう事となりますが、コードの丸投げだけは避けたいもので。。宜しくお願い致します。 mysql_connect('localhost','root','*******'); mysql_select_db('test'); //全てのカテゴリ if($category == 1){ if($ktype == 1){ $sql = "select * from member where nam like '%$nam%' or gyoushu like '%$nam%'…"; $result = mysql_query($sql); $rows = mysql_num_rows($result);

    • ベストアンサー
    • PHP
  • プリペアードステートメントへの変更

    PHP、MySQL初級者です。 ある商品を検索するサイトを運営していますが、SQLインジェクション対策がなされておらず、mysql_queryで書いていたものを、プリペアドステートメントに初挑戦しています。 元々作ったプログラムを、ネットの情報や本を参考に修正していますが、検索をすると画面が真っ白になってしまう現象から2日間抜け出せずにいます。 どなたかご教授いただけますでしょうか。PHPのバージョンは5.2、Windows環境です。 ちなみに、$display_fromはページネーションに関係するものです。 また、//でコメントアウトしている箇所は一旦PEAR::DBをつかうやりかたに修正したなごりです。 また、rs2のところは検索結果のヒット数を表示させるためにわざわざ全件を取得しています。(このやり方自体スマートではない感じがしていますが。。) /*POSTでkeywordを取得*/ if($_POST['keyword']!=""){ $keyword=$_POST['keyword']; } elseif($_GET['pageID']!=""){ $keyword=$_SESSION['keyword']; } else{ } //ログイン情報をインクルードする include('db_login.php'); //PEAR DBの機能が含まれるDB.phpもインクルードする require_once("DB.php"); //接続する $connection = DB::connect("mysql://$db_username:$db_password@$db_host/$db_database"); if(DB::isError($connection)){ die("Could not connect to the database: <br />".DB::errorMessage($connection)); } //$db = mysql_connect("localhost", "root", "root")or die ('DB Connection Error= '. mysql_error()); //mysql_select_db("book_db", $db)or die ('DB Connection Error= '.mysql_error()); //$rs = mysql_query("SET character set UTF8", $db); //$rs2 = mysql_query("SET character set UTF8", $db); /*keywordが空白だった場合*/ if($keyword==""){ $query="SET character set UTF8"; $rs=$connection->query($query); $query="select * from book_card order by point desc limit $display_from, 50"; $rs=$connection->query($query); if(DB::isError($rs)){ die("Could not query the database:<br />$query ".DB::errorMessage($rs)); } $query2="SET character set UTF8"; $rs2=$connection->query($query2); $query2="select * from book_card"; $rs2=$connection->query($query2); if(DB::isError($rs2)){ die("Could not query the database:<br />$query2 ".DB::errorMessage($rs2)); } /*もともとのコード $rs=mysql_query("select * from book_card order by point desc limit $display_from, 50", $db); $rs2=mysql_query("select * from book_card", $db); */ } /*keywordに何か入っていた場合*/ else{ $query="SET character set UTF8"; $rs=$connection->query($query); //$query="select * from book_card where Name like '%$keyword%' order by point desc limit $display_from, 50"; //$rs=$connection->query($query); $query = "select * from book_card where Name like ? order by point desc limit ?, 50"; $rs = $connection->prepare($query); $data = array("%$keyword%", $display_from); $connection->execute($rs, $data); $query2="SET character set UTF8"; $rs2=$connection->query($query2); //$query2="select * from book_card where Name like '%$keyword%'"; //$rs2=$connection->query($query2); $query2 = "select * from book_card where Name like ?"; $rs2 = $connection->prepare($query2); $data2 = "%$keyword%"; $connection->execute($rs2, $data2); /*もともとのコード $rs=mysql_query("select * from book_card where Name like '%$keyword%' order by point desc limit $display_from, 50", $db); rs2=mysql_query("select * from book_card where Name like '%$keyword%'", $db); */ } 分かりにくい質問ですみませんが、どなたかお分かりの方ご教授いただけますでしょうか。 何卒宜しくお願い致します。

    • ベストアンサー
    • PHP
  • テーブルのレコード数を取得したいのですが、返り値が1になってしまいます。

    最近MySQLやPHPを触り始めたものです。マニュアルを参考に、テーブルのレコード数を取得しようとしてみたのですが、返り値が1になってしまいます。なぜこのような結果になるのでしょうか? http://jp.php.net/manual/ja/function.mysql-num-rows.php : : $db = mysql_connect($db_host,$db_user,$db_password); mysql_select_db($db_name,$db); $count = mysql_query("select count(*) from $db_table", $db); $num_rows = mysql_num_rows($count); echo "<p>{$num_rows}</p>"; どこに問題があるのかわかりません……。初歩的なミスをしているのだと思うのですが、数時間このままの状態で困っています。

    • ベストアンサー
    • PHP
  • MySQL5のデータを、SQL文を使いcsv形式でダウンロードさせると文字化けします

    環境:Apache2&PHP5&MySQL5 MySQL5のデータを、SQL文を使いcsv形式でダウンロードさせると文字化けします。 -- <?php header("Content-Type: application/octet-stream"); ?> <?php header("Content-Disposition: attachment; filename=output.csv"); ?> <?php $srv = "localhost"; // サーバー名 $id = "root"; // ユーザーID $passwd = "******"; // パスワード $dbn = "sample"; // データベース名 $sql = "SELECT * FROM result"; // SQL文 $db=mysql_connect($srv,$id,$passwd); mysql_select_db($dbn,$db); $rs=mysql_query($sql,$db); for($i=0; $i<mysql_num_fields($rs); $i++){ print(mb_convert_encoding(mysql_field_name($rs,$i),"SJIS","EUC-JP").","); } print("\n"); for($j=0 ;$j<mysql_num_rows($rs); $j++) { for($k=0; $k<mysql_num_fields($rs); $k++) { $str=mysql_result($rs,$j,$k); print(mb_convert_encoding($str,"SJIS","EUC-JP").","); } print("\n"); } mysql_close($db); ---ダウンロードしたCSVは半角英数文字はそのまま出ますが、 日本語(全角)が、?に化けます。(下記の参照してください) 24 2 1 444 4444 2008/7/3 15 ? 1E+18 ??? ????? ?????? 25 2 1 444 kojiide 2008/7/3 30 ? 1E+18 ??? ????? ?????? 26 2 1 444 kojiide 2008/7/3 30 ? 1E+18 ??? ????? ?????? --- print(mb_convert_encoding($str,"SJIS","EUC-JP").","); でSJISになっていると思うのですが、どなたかアドバイスいただけると幸いです。

    • ベストアンサー
    • PHP
  • mysql_query等でレコード数を変数に格納

    mysql> SELECT COUNT(id) AS rows FROM someTABLE WHERE name IN ( 'A','B','C' ) ; で +------+ | rows | +------+ | 9 | +------+ と出すことができます。 この rows の数「9」を php の変数に入れたいのです。 <?php // DB接続省略 $sql = "SELECT COUNT(id) AS rows FROM someTABLE WHERE name IN ( 'A','B','C' )" ; $result = mysql_query($sql, $conn); var_dump($sql."<br />"); echo ($result."--result"."<br/>"); $rows= mysql_num_rows($result); echo ($rows."--rows"."<br/>"); ?> として、ブラウザで確認すると string(80) "SELECT COUNT(id) AS rows FROM someTABLE WHERE name IN ( 'A','B','C' ) " Resource id #3--result 1--rows となって、 $rows に値’9’が入りません。$rows にレコード数を取得させるには、どうすれば良いでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう