0

このクエリは、関数と名前で囲まずにphpページで呼び出すと正常に機能します

//MAKE DATABASE CALL TO GET PRODUCT 
$product_id = $line_value['productId'];
$product_query = "SELECT * 
                  FROM products
                  WHERE id = '$product_id'
                  LIMIT 1";
$product_result = pg_query($con, $product_query);
while ($product_row = pg_fetch_assoc($product_result)){
    $product = $product_row['product'];
}
//works
echo $product;

しかし、関数内に配置しようとするとエラーが発生します

$product = _get_product($product_row['product']);
echo $product'

function _get_product($product_id){

//prints 1
echo $product_id
    //MAKE DATABASE CALL TO GET PRODUCT 
    $product_id = $line_value['productId'];
    $product_query = "SELECT * 
                      FROM products
                      WHERE id = '$product_id'
                      LIMIT 1";
    $product_result = pg_query($con, $product_query);
    while ($product_row = pg_fetch_assoc($product_result)){
        $product = $product_row['product'];
    }

return $product;

}

警告: pg_query() は、パラメーター 1 がリソースであると想定しています。263 行目の /home/www.site.com/file.php で指定された null です。

関数がページの上部にある含まれているdb接続ファイルにアクセスできないと思ったのですが、それを関数内に入れると、このエラーが発生しました

警告: pg_query() [function.pg-query]: クエリが失敗しました: エラー: 整数の入力構文が無効です: "" LINE 3: WHERE id = '' ^ in /home/www.site.com/file.php on line 265

私は何を間違えましたか?ありがとう!

4

2 に答える 2

2

関数内でグローバル変数として登録する必要があり$conます (そのため、ローカルで new を宣言するのではなく、インポートされます)。

これにします:

function _get_product($product_id) {
    global $con;
于 2012-11-26T01:25:13.953 に答える
2

問題は変数のスコープです。関数のスコープには、関数の外で宣言された変数は含まれません。グローバル変数を使用しないでください。代わりに、 $con をパラメーターとして渡すことで関数へのアクセスを許可します。

function _get_product($product_id, $con){

そして、これを使ってそれを呼び出します:

 _get_product($line_value['productId'], $con);
于 2012-11-26T01:27:05.377 に答える