-4

我无法理解为什么我无法在这里正确使用 echo 语句。

将获取值传递给脚本的链接

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

下面是我的脚本,它从链接中获取 GET 值。

<?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),而不是数据。要获取数据,您需要使用 fetch 函数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首先,子句中的两个表之间没有定义关系。
其次(这就是为什么您会收到“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两个表是通过组合这些列相同的行来连接的。

此外,在直接插入带有 GET/POST 数据的查询时要小心。阅读有关(My)Sql 注入的更多信息。

Mysql 函数已被弃用,很快就会从 PHP 中完全删除,您应该考虑切换到MySQLiPDO

于 2013-08-20T20:01:53.893 回答