-4

ここで echo ステートメントを適切に使用できない理由がわかりません。

取得値をスクリプトに渡すリンク

  http://example.com/example.php?page=2&hot=1002

以下は、リンクから値を取得するスクリプトです。

<?php
    session_start();
    require('all_functions.php');
    if (!check_valid_user())
    {
        html_header("example", "");
    }
    else
    {
        html_header("example", "Welcome " . $_SESSION['valid_user']);
    }
    require('cat_body.php');
    footer();
?>

cat_body.php は次のとおりです。

<?php
    require_once("config.php");

    $hot = $_GET['hot'];

    $result = mysql_query( "select * from cat, cat_images where cat_ID=$hot");

    echo $result['cat_name']; 
?>

私を助けてください。

4

1 に答える 1

0

mysql_queryデータではなく、成功した場合 (またはエラーの場合は false) に結果リソースを返します。mysql_fetch_assoc()データを取得するには、配列キーとして列名を持つ配列を返すようなフェッチ関数を使用する必要があります。

$result =  mysql_query( "select 
* from cat, cat_images
where 
cat_ID=$hot");
if ($result) {
    $row = mysql_fetch_assoc($result);
    echo $row['cat_name'];
} else {
    // error in query
    echo mysql_error();
}

// 追加
クエリの定義が不十分です。whereまず、句内の 2 つのテーブル間に定義された関係はありません。
第二に(これが、「where句の列 'cat_ID'があいまいです」というメッセージが表示される理由です)、両方のテーブルに列cat_IDがありますが、使用しているテーブルの列をmysqlに明示的に伝えていません。

クエリは次のようになります (必要なものではない可能性があるため、適切に変更してください)。

"SELECT * FROM cat, cat_images
WHERE cat.cat_ID = cat_images.cat_ID AND cat.cat_ID = " . $hot;

whereのcat.cat_ID = cat_images.cat_ID部分は、それらの 2 つのテーブルがそれらの列が同じ行を結合することによって結合されていることを示しています。

また、GET/POST データを含むクエリを直接挿入する場合も注意してください。(My)Sql インジェクションの詳細をお読みください。

MySQL 関数は非推奨であり、まもなく PHP から完全に削除されます。MySQLiまたはPDOへの切り替えを検討する必要があります。

于 2013-08-20T20:01:53.893 に答える