$no = urldecode($_GET["no"]);
$result = mysql_query('SELECT COUNT(*) AS count FROM test WHERE keyword = "$no"');
で記載すると何も表示されません。
$no = urldecode($_GET["no"]);
$result = mysql_query('SELECT COUNT(*) AS count FROM test WHERE keyword = "北海道"');
と記載すると北海道が表示されます。
どう記載すればいいのか全く分からず困ってます。
宜しくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
PHP
1$result = mysql_query('SELECT COUNT(*) AS count FROM test WHERE keyword = "' . $no . '"');
とすれば質問に記載のものであれば動くと思います。
※ ただ、SQL文を$_GETの値をもとに文字列で作成するのはお勧めしません。SQL インジェクションの脆弱性を生むのでやめましょう。
PHP
1var_dump('SELECT COUNT(*) AS count FROM test WHERE keyword = "$no"'); 2var_dump('SELECT COUNT(*) AS count FROM test WHERE keyword = "' . $no . '"');
としてみれば、なぜダメなのかが解ると思います。
※ちなみに日本語でなくてもだめです。
PHP
1<?php 2$no='北海道'; 3var_dump('SELECT COUNT(*) AS count FROM test WHERE keyword = "$no"'); 4var_dump('SELECT COUNT(*) AS count FROM test WHERE keyword = "' . $no . '"');
実行結果
string(56) "SELECT COUNT() AS count FROM test WHERE keyword = "$no""
string(62) "SELECT COUNT() AS count FROM test WHERE keyword = "北海道""
PHP
1<?php 2$no='北海道'; 3echo var_export('SELECT COUNT(*) AS count FROM test WHERE keyword = "$no"', true) . PHP_EOL; 4echo var_export('SELECT COUNT(*) AS count FROM test WHERE keyword = "' . $no . '"', true) . PHP_EOL;
実行結果
'SELECT COUNT() AS count FROM test WHERE keyword = "$no"'
'SELECT COUNT() AS count FROM test WHERE keyword = "北海道"'
投稿2017/01/27 06:10
編集2017/01/27 06:55総合スコア7914
0
なんとか解決しました
初心者質問ですみませんでした
投稿2017/01/27 07:00
総合スコア11
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/27 07:06
2017/01/27 07:21
0
PHP
1$result = mysql_query('SELECT COUNT(*) AS count FROM test WHERE keyword = "$no"');
mysql_query が '' で SQL を記述していますから、$no は展開されません。
結果として、keyword が '$no' である件数を取得しようとしているので、0件でしょう。
PHP
1$result = mysql_query("SELECT COUNT(*) AS count FROM test WHERE keyword = '$no'");
ではどうでしょう?
投稿2017/01/27 06:12
総合スコア13703
0
ベストアンサー
PHP
1$no = urldecode($_GET["no"]); 2echo "no is ".$no; 3echo "_GET is ".var_export($_GET, true);
とかして値が渡っているか見てみたらよいのでは。
追記
クエリストリングから来た文字をそのままSQLクエリに使う事はセキュリティ上問題があるので、以下のような形ではどうでしょうか。
PHP
1$no = urldecode($_GET["no"]); 2$query = sprintf("SELECT COUNT(*) AS count FROM test 3 WHERE keyword='%s'", 4 mysql_real_escape_string($no)); 5$result = mysql_query($query);
※ただ、mysql_query等のmysql_系functionはPHP5.5.0で非推奨になっており、PHP7では使えません。
出来ればmysqli_系functionを使われた方が、今後の為に良いかと思います。
http://php.net/manual/ja/function.mysql-query.php
http://php.net/manual/ja/mysqli.query.php
投稿2017/01/27 06:06
編集2017/01/27 06:30総合スコア5405
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/27 06:17
2017/01/27 06:18
2017/01/27 06:21
2017/01/27 06:22
2017/01/27 06:25
2017/01/27 06:27
2017/01/27 06:32
2017/01/27 06:39
2017/01/27 06:46
2017/01/27 06:48
2017/01/27 06:57
2017/01/27 06:59