-1

对不起,我的最后一个帖子。这是我的修改,请帮助我。

<?php
//connect database

$sql = "SELECT * FROM user where user_id = 8320 AND password = 'admin' ";
$query = pg_query($sql);
var_dump($row = pg_fetch_array($query)); //dumps correctly.

?>

但问题是这样的..当我尝试将其作为一个函数时:

function check($user_id, $password)
{
$sql = "SELECT * FROM user where user_id = $user_id AND password = '$password' ";
$query = pg_query($sql);
$row = pg_fetch_array($query);
return $row;
}

并在此处调用:

var_dump($data = check(8320, 'admin')); DUMPS NULL;

怎么就变成这样了?

4

3 回答 3

1

它返回NULL是因为您的 SQL 查询出错,并且没有返回任何结果。你应该在你的函数中做一些错误检查,试试这个版本:

function check($user_id, $password)
{
    $dbconn = pg_connect("host=localhost dbname=test");
    $sql = "SELECT * FROM user where user_id = $1 AND password = $2 ";
    $result = pg_query_params($dbconn, $sql, array($user_id,$password));
    $row = pg_fetch_array($result);
    if (!$row) {
       echo pg_last_error($dbconn);
    } else {
       return $row;
    }
}
于 2013-06-17T05:33:40.320 回答
0

试试下面的代码。它应该适合你。

$data = check(8320, 'admin');
var_dump($data);
于 2013-06-17T05:32:16.963 回答
0

似乎函数中缺少您的 PostgreSQL 资源。你有两个选择。

  1. 使用 . 在函数内部声明连接资源global
  2. 在函数内部建立连接。

这是第一个选项:

$conn = pg_connect('host','user','pass','db');

function check($user_id, $password)
{
   global $conn;
   $sql = "SELECT * FROM user where user_id = $user_id AND password = '$password' ";
   $query = pg_query($conn, $sql);
   $row = pg_fetch_array($query);
   return $row;
}

这是第二个选项:

function check($user_id, $password)
{
   $conn = pg_connect('host','user','pass','db');
   $sql = "SELECT * FROM user where user_id = $user_id AND password = '$password' ";
   $query = pg_query($conn, $sql);
   $row = pg_fetch_array($query);
   return $row;
}

根据PHP 手册,您可以省略连接资源,但不建议这样做,因为这可能会导致难以在脚本中找到错误。

于 2013-06-17T05:35:20.193 回答