如何从一个函数获取lastInsertID并在另一个函数中使用它? PDO

时间:2017-02-25 18:29:34

标签: php

您好我能够在一个函数中获取最后一个插入的ID,但是如何在另一个函数中使用它,因为它在该函数外部时显示为未定义的变量。

由于

编辑: 来自class.user.php的代码

public function one($first)
    {
        try
        {
            $stmt = $this->db->prepare("INSERT INTO table1(first) VALUES(:first)");
            $stmt->bindParam(':first', $first);
            $stmt->execute();

            $newId = $this->db->lastInsertId();

            return $stmt;
            return $newId;

        }
        catch(PDOException $e)
        {
           echo $e->getMessage();
        }
    }

    public function two($array, $newID)
    {
        try
        {
            foreach($array as $arrayText){
                $this->db->beginTransaction();
                $stmt = $this->db->prepare("INSERT INTO table2(arrayText, table1_id) VALUES(:array, :newId)");
                $stmt->bindParam(':array', $arrayText);
                $stmt->bindParam(':newId', $newId);
                $stmt->execute();



                $this->db->commit();

            }

            return $stmt;
        }
        catch(PDOException $e)
        {
           echo $e->getMessage();
        }
    }

php code

if(isset($_POST['btn']))
{
   $first = trim($_POST['first']);
   $array = $_POST['array'];


   if($user->one($first) && $user->two($array, $newId))
   {
       Print '<script>alert("Added to database");</script>'; //Prompts the user
   }

 }

2 个答案:

答案 0 :(得分:0)

在第一个函数中使用return语句返回此值,然后在另一个函数中调用此函数。实施例

<?php
function returnValue() {
    $someVar = 'hello';
    return $someVar; //or just 'hello' instead
}

function sayHello() {
    echo returnValue(); //or
    $helloText = returnValue(); // $helloText stores 'hello' string now
}

您不能逐个使用两个return语句。在您的代码中,将返回$stmt的值,但$newId不会。如果要返回2值,则必须创建一个数组。

例如

<?php
return array($stmt, $newId);

在函数二()现在只需调用 one($first)

答案 1 :(得分:0)

你可以像这样使用

<?php
function myfunction ()
{
    $var='My variable';
    return $var;
}

echo myfunction();