[英]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.