-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

NULLSQL クエリにエラーがあり、結果が返されないため返されます。関数でエラーチェックを行う必要があります。次のバージョンを試してください。

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 リソースが欠落しているようです。2 つのオプションがあります。

  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;
}

これが 2 番目のオプションです。

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 に答える