0

我有两个文件:

购物车功能.php

function get_product_name($pid){
    $result = mysql_query("SELECT product_name FROM product_table WHERE product_id='".$pid."'", $link);
    $row = mysql_fetch_array($result);
    return $row['product_name'];
}

购物车.php

<?php
    include('cart_function.php');
    $pid = $_GET['product_id'];
    $pname = get_product_name($pid);
    echo $pname;
?>

在我执行之后cart.php,它显示一个错误

提供的参数不是有效的 MySQL-Link 资源'

如果我直接在 MySQL 数据库中运行查询,它会完美运行。如果我get_product_name()直接在 中使用该功能cart.php,它再次不起作用。但是,如果我删除该函数并使用下面的代码,它就可以工作:

<?php
    $pid = $_GET['product_id'];
    $result = mysql_query("SELECT product_name FROM product_table WHERE product_id='".$pid."'",$link);
    $row = mysql_fetch_array($result);
    $pname = $row['product_name'];
    echo $pname;
?>

为什么?

4

2 回答 2

5

问题在这里:

function get_product_name($pid){
    $result = mysql_query("SELECT product_name FROM product_table WHERE product_id='".$pid."'",
                          $link);

您已编写$link,但未提供其值。在传递值时,您必须在函数参数中传递此$pid值,如下所示:

function get_product_name($pid,$link){
于 2012-10-02T05:45:13.887 回答
0

1)您直接将数据库连接链接用作 $link 到函数中,因此它应该被视为局部变量并且它没有任何内容。

2)所以你需要在你的函数中将 $link 声明为全局。

function get_product_name($pid){
        global $link;
        $result=mysql_query("SELECT product_name FROM product_table WHERE product_id='".$pid."'",$link);
        $row=mysql_fetch_array($result);
        return $row['product_name'];
    }

3) 或者您可以将 $link 作为 get_product_name($pid,$link) 的第二个参数传递

于 2012-10-02T05:46:18.587 回答