为了账号安全,请及时绑定邮箱和手机立即绑定

lastInsertId - PDO

lastInsertId - PDO

PHP
千万里不及你 2022-06-17 15:56:07
大家好,插入记录后我想记录寄存器的最后一个 ID,我正在使用 PDO lastInsertId () 并写入 $_SESSION,但我没有得到我的代码中缺少的内容我有一条错误消息<?php session_start();define("SERVER", "localhost");define("BASES", "databases");define("USER", "userbases");define("PASS", "******");class Sql extends PDO {    private $conn;    public function __construct(){            try {                $this->conn = new PDO("mysql:dbname=".BASES.";host=".SERVER, USER, PASS);        }catch (Exception $e) {            echo "Database Error: ".$e->getMessage();    }        catch(Exception $e){                echo "Generic error: ".$e->getMessage();        }    }    public function query($rawQuery, $params = array()){        $stmt = $this->conn->prepare($rawQuery);        $this->setParams($stmt, $params);        $stmt->execute();        return $stmt;    }    public function query($rawQuery, $params = array()){       $stmt = $this->conn->prepare($rawQuery);       $this->setParams($stmt, $params);       $stmt->execute();       return $this->conn->lastInsertId(); //agreement by @dennisgon   }}/* INSERT */$query = "INSERT INTO User(Name,Email) VALUES ('Cledson Stefanato','teste@gmal.com');";$txt = new Sql();$txt->query($query);$_SESSION["RECORD"] = $txt->lastInsertId();echo "Recorded: ".$_SESSION["RECORD"];?>致命错误:未捕获的错误:在 /home/xxxx/index.php:24 中的 null 上调用成员函数 lastInsertId() 堆栈跟踪:在第 24 行的 /home/xxxx/index.php 中抛出 #0 {main}
查看完整描述

1 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

最后一个 lastInsertId() 是 PDO 类上的一个函数,问题是在你的类中你返回准备函数,认为最好的方法是你必须像这样在函数查询中返回 lastInsertId()


//---------------Conseld 正如我所建议的那样,我通过使用两个不同的类和函数来补充。


<?php

/*CONNECTION WITH DATABASES*/

define("SERVER", "localhost");

define("BASES", "databases");

define("USER", "userbases");

define("PASS", "******");


/*DATABASE AND FUNCTION CONNECTION CLASS*/

class QueryPDO extends PDO{


    private $conn;

    public function __construct(){

        $this->conn = new PDO("mysql:dbname=".BASES.";host=".SERVER, USER, PASS);

    }

    /*INSERT, UPDATE AND DELETE FUNCTION*/

    public function query($rawQuery, $params = array()){

        $stmt = $this->conn->prepare($rawQuery);

        $stmt->execute();

        return $this->conn->lastInsertId();

    }


}


/*DATABASE AND FUNCTION CONNECTION CLASS*/

class SelectPDO extends PDO{


    private $conn;

    public function __construct(){

        $this->conn = new PDO("mysql:dbname=".BASES.";host=".SERVER, USER, PASS);

    }

    /*LISTAR DADOS*/

    public function query($rawQuery, $params = array()){

        $stmt = $this->conn->prepare($rawQuery);

        $stmt->execute();

        return $stmt;

    }


    public function select($rawQuery, $params = array()):array{

        $stmt = $this->query($rawQuery, $params);

        $stmt->execute();

        return $stmt->fetchAll(PDO::FETCH_ASSOC);

    }


}


/*INSERT - MAY ALSO USE WITH UPDATE AND DELETE*/

$query = "INSERT INTO User(

                Nome,

                Email

                ) VALUES (

                'Cledson A Stefanato',

                'txt@gmail.com'

                );";

$txt = new QueryPDO();


/*SESSION RECORD, LAST REGISTRATION*/

$_SESSION["RECORD"] = $txt->query($query);

echo "Recorded: ".$_SESSION["RECORD"];



/*LIST*/

$query = "SELECT * FROM Cadastro";

$txt = new SelectPDO();

$result = $txt->select($query);


//echo json_encode($result);

//echo var_dump($result);


foreach ($result as $dados){

?>

<div style="color: red; font-size: 15px">

    <?php

    echo $dados["Nome"]. "<br />";

    echo $dados["Email"]. "<br />";

    ?>

</div>

<?php } ?> 


查看完整回答
反对 回复 2022-06-17
  • 1 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号