0

クエリのパラメータを別のページに渡す際に少し問題があります。

次のページでクエリを処理するために、レストランの名前を製品の名前を渡すリンクにしたいです。

echo "<p class='p2'><a class='link' href='restaurant.php?name=". $row['name'] ."'><strong>". $row['name'] ."</strong></a>

レストランのページ

<?php
require ("db.php");
$name = $_GET['name'];

$query = "SELECT * FROM restaurant WHERE name =\"$name\"";
$result = mysql_query($query);
$row = mysql_fetch_array($result);   
?>

しかし、何も表示されません。

私が間違っていることについて何か考えはありますか?

4

2 に答える 2

4

まず、注意:特定の文字はURLでうまく機能しないため、名前ではなくIDを渡す必要があります。

urlencode()次に、名前に使用してみてください。

echo "<p class='p2'><a class='link' href='restaurant.php?name=". urlencode($row['name']) ."'><strong>". $row['name'] ."</strong></a>
于 2012-07-26T20:29:30.290 に答える
1

printもちろん、ファイルに関数 (echo、print、var_dump など)がないため、何も表示されません。


とにかく、おそらくクエリが機能しないと思ったでしょう。もしそうなら、あなたのを試してみてechoください$row['name']。すべて問題なければ、変数が設定されているかどうかを確認しますnull

この問題を解決するには、isset()またはを使用しますempty()

例:

if(!empty($_GET['name'])) $name = $_GET['name'];
else die('Variable name is empty');

また、ページの上部に追加ini_set('display_errors', true)して、エラーがないかどうかを確認してください。


あなたのコードは非常に安全ではなく、脆弱であることに注意してください。mysql_real_escape_string()クエリを実行する前に使用します。

例:

$name = mysql_real_escape_string($_GET['name']);
于 2012-07-26T20:31:31.610 に答える