2

これが私の機能です

function GetUser($id)
{
    global $pdo;
    $stmt = $pdo->prepare('SELECT lname,fname,mi FROM user WHERE id = :id LIMIT 1');
    $stmt->execute(array(':id'=>$id));
    foreach($stmt as $name){
        $lname = $name['lname'];
        $lname = $name['fname'];
        $mi = $name['mi'];
    }

    return //what to put here?
}

これが関数を使用するための私のコードです

include 'function.php';
$names = GetUser($_SESSION['id']);
//what's next?

関数から$lname、$ fname、$ miを取得するにはどうすればよいですか?ヘルプや提案が必要です。ありがとうございました :)

4

5 に答える 5

4

globalまず、キーワードを使用せずに、必要な変数を挿入します。第二に、なぜ配列を返さないのですか?:

function getUser($pdo, $id)
{
    $stmt = $pdo->prepare('SELECT lname,fname,mi FROM user WHERE id = :id LIMIT 1');
    $stmt->execute(array(':id'=>$id));

    $result = array();
    foreach($stmt as $name){
        $result['lname'] = $name['lname'];
        $result['fname'] = $name['fname'];
        $result['mi']  = $name['mi'];
    }

    return $result;
}

$result = getUser($pdo, 1);
var_dump($result);

これは最後の結果のみを返すことに注意してください。あなたがそれをすべてしたい場合:

function getUser($pdo, $id)
{
    $stmt = $pdo->prepare('SELECT lname,fname,mi FROM user WHERE id = :id LIMIT 1');
    $stmt->execute(array(':id'=>$id));

    return $stmt->fetchAll();
}

$result = getUser($pdo, 1);
var_dump($result);

また、大文字ではなく通常の文字で始まる関数名を作成したことにも注意してください。「通常の」命名規則では、クラスは大文字で始まりますが、関数/メソッドは通常の名前で始まります。

最初の解決策に基づいて情報を取得する場合は、次のようにします。

echo $result['lname'];

2 番目の解決策に基づいて情報を取得する場合は、次のようにします。

echo $result[0]['lname'];
于 2012-08-26T14:47:39.977 に答える
3
function GetUser($id)
{
    global $pdo;
    $stmt = $pdo->prepare('SELECT lname,fname,mi FROM user WHERE id = :id LIMIT 1');
    $stmt->execute(array(':id'=>$id));
    foreach($stmt as $name){
        $lname = $name['lname'];
        $lname = $name['fname'];
        $mi = $name['mi'];
    }

    return array(
        "$lname" => $lname,
        "$fname" => $fname,
        "$mi" => $mi
     );
}

これが次の部分です。

include 'function.php';
$myArray = GetUser($_SESSION['id']);
$fname = $myArray["$fname"];
$lname = $myArray["$lname"];
$mi = $myArray["$mi"];

または:

include 'function.php';
$myArray = GetUser($_SESSION['id']);
$fname = $myArray[0];
$lname = $myArray[1];
$mi = $myArray[2];
于 2012-08-26T14:59:08.427 に答える
1
return array(
    "lname" => $lname,
    "fname" => $fname,
    "mi" => $mi
);
于 2012-08-26T14:48:23.517 に答える
1
function GetUser($id) {
    global $pdo;
    $stmt = $pdo->prepare('SELECT lname,fname,mi FROM user WHERE id = :id LIMIT 1');
    $stmt->execute(array(':id'=>$id));
    return $stmt;
}


include 'function.php';
$names = GetUser($_SESSION['id']);
foreach($names as $name){
    $lname = $name['lname'];
    $lname = $name['fname'];
    $mi = $name['mi'];
}

テストされていませんが、動作するはずです

于 2012-08-26T14:48:42.830 に答える
1
function GetUser($id)
{
    global $pdo;
    $stmt = $pdo->prepare('SELECT lname,fname,mi FROM user WHERE id = :id LIMIT 1');
    $stmt->execute(array(':id'=>$id));
   return count($stmt)==1?$stmt[0]:null; //you may have nothing returned from the database so return null
}

それで:

include 'function.php';
$names = GetUser($_SESSION['id']);
if ($names){   //if this is not null then get the properties
echo $names['fname'];
echo $names['lname'];
echo $names['mi'];
}
于 2012-08-26T14:49:25.980 に答える