在php mysql中从$ _post获取变量后,echo语句没有显示结果

时间:2013-08-20 19:50:45

标签: php mysql

我无法理解为什么我在这里无法正确使用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']; 
?>

请帮帮我。

1 个答案:

答案 0 :(得分: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子句中的两个表之间没有定义关系 其次(这就是为什么你得到那条消息“在'where子句中的列'cat_ID'是不明确的”),两个表都有列cat_ID,但你没有明确告诉mysql你正在使用哪个表的列。

查询应该看起来像这样(可能不是你需要的东西,所以要适当地改变它):

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

其中的cat.cat_ID = cat_images.cat_ID部分通过组合这些列相同的行来表示这两个表是否已连接。

另外,在直接插入带有GET / POST数据的查询时要小心。详细了解(My)Sql injection

不推荐使用Mysql函数,很快就会从PHP中删除它们,您应该考虑切换到MySQLiPDO