[英]lastInsertId - PDO
大家好,插入记录后我想记录寄存器的最后一个 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() 堆栈跟踪:#0 {main} 在第 24 行的 /home/xxxx/index.php 中抛出
last lastInsertId() 是 PDO 类上的一个函数,问题是在你的类中你返回 prepare 函数,认为最好的方法是你必须像这样在函数查询中返回 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 } ?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.