0

私は2つのファイルを持っています:

cart_function.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) または、get_product_name($pid,$link) の 2 番目の引数として $link を渡すことができます

于 2012-10-02T05:46:18.587 に答える