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]:查询失败:错误:整数输入语法无效:“”第 3 行:/home/www.site.com/file.php 中的 WHERE id = '' ^ 在线265

我做错了什么?谢谢!

4

2 回答 2

2

您需要$con在函数内注册为全局变量(因此它是导入的,而不是在本地声明的新变量)。

把它变成这样:

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 回答