调用查询数据库的php函数可以';不要使用$con资源。

调用查询数据库的php函数可以';不要使用$con资源。,php,Php,当我在我的php页面中调用它时,这个查询工作得很好,没有使用函数和名称围绕它 //MAKE DATABASE CALL TO GET PRODUCT $product_id = $line_value['productId']; $product_query = "SELECT * FROM products WHERE id = '$product_id' LIMIT 1"; $pr

当我在我的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=\u get\u product($product\u 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为资源,在 /home/www.site.com/file.php在线 263

我想也许函数没有访问页面顶部包含的db连接文件的权限,但是当我把它放在函数中时,我得到了这个错误

警告:pg_query()[function.pg query]:查询失败:错误:无效 整数的输入语法:“第3行:其中id=”^in /home/www.site.com/file.php,第265行


我做错了什么?谢谢

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

这样做:

function _get_product($product_id) {
    global $con;

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

这样做:

function _get_product($product_id) {
    global $con;
问题是。函数的作用域不包括在其外部声明的变量。 不要使用全局变量,而是通过传递$con作为参数来允许函数访问:

function _get_product($product_id, $con){
用这个来称呼它:

 _get_product($line_value['productId'], $con);
问题是。函数的作用域不包括在其外部声明的变量。 不要使用全局变量,而是通过传递$con作为参数来允许函数访问:

function _get_product($product_id, $con){
用这个来称呼它:

 _get_product($line_value['productId'], $con);

最好将$con作为函数的参数,例如
函数\u get\u product($product\u id,$con)
-使用全局变量几乎总是一个坏主意。最好将$con作为函数的参数,例如
函数\u get\u product($product\u id,$con)
-使用globals几乎总是一个坏主意。在你为我辩护时发表评论之前,我一直在键入它:\n这样做之后,我仍然会收到以下错误:
警告:pg_query()[function.pg query]:查询失败:错误:整数的输入语法无效:“第3行:其中id='''^在
中,引号之外的“^有什么有意义的吗?谢谢他有一个打字错误。。。函数调用应该是
\u get\u product($line\u value['productId'],$con)@thomas问题是您使用了错误的变量来获取id,因此它没有将一个变量插入到查询中。谢谢你的编辑,这将解决你的错误。@thomas the
^
可能会指向
'
,如果它按预期的间距排列,将查询中的错误指向你。在你为我辩护之前,我正在键入它:\n这样做之后,我仍然收到以下错误:
警告:pg_query()[function.pg query]:查询失败:错误:整数的输入语法无效:“
中的第3行:其中id=”^在引号之外是否有一些有意义的内容^?谢谢他有一个打字错误。。。函数调用应该是
\u get\u product($line\u value['productId'],$con)@thomas问题是您使用了错误的变量来获取id,因此它没有将一个变量插入到查询中。感谢您的编辑,这将解决您的错误。@thomas the
^
可能会指向
'
,如果它按预期的间隔排列,则会将查询中的错误指向您。