みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPでMySQLのデータを検索したい

お世話になります。
PHPでMySQLのデータを検索したいと思い、
以下のようにしてみたのですがうまく表示されません。
--

$name = $_POST["name"];

$link = mysql_connect('localhost', '', '');
$db_selected = mysql_select_db('', $link);

mysql_set_charset('utf8');

$sql = "SELECT * FROM search WHERE". $name;
$result = mysql_query($sql);


while($row = mysql_fetch_array($name)) {
print $row['name'];
}

$close_flag = mysql_close($link);

--
どう改善すればいいのでしょうか?
初心者の為、少々お見苦しい点があるかと思いますが
どうぞよろしくお願いします。

投稿日時 - 2012-10-03 14:33:01

QNo.7729958

困ってます

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

まずはSQL文が書けるようになっていないと(phpで云々といっても)意味がありません。

http://dev.mysql.com/doc/refman/5.1/ja/select.html


また投稿されたデータをSQL文に引き渡すなら、必ずエスケープしてください。

$sql = sprintf("SELECT * FROM search WHERE name='%s'", mysql_real_escape_string($name));


実行結果が「失敗」していないか確認する習慣を。

$result = mysql_query($sql);
if ($result === false) { エラー処理; }

もしくは

$result = mysql_query($sql) or die('sql error');



(蛇足)
ネイティブなMySQL関数はすでに非推奨です。MySQLiもしくはPDOで書き直すことをお勧めします。プリペアドステートメント+プレースホルダが使えますのでエスケープ忘れもありません。

投稿日時 - 2012-10-03 15:14:39

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

$sql = "SELECT * FROM search WHERE". $name;
まず、ここを直しましょう。
$nameには何が入っていますか?
検索するためのキーワードが入ってるのではないですか?

それを search テーブルのどのカラムと比較したいのですか?
比較したいカラムの名前がわかったら
$sql = "SELECT * FROM search WHERE カラム名 = '". $name . "'";
といった感じに直してみましょう。

投稿日時 - 2012-10-03 15:02:23

あなたにオススメの質問