无法选择最后插入的 id 为 [Mysql, php pdo oop] [重复] 的行
Posted
技术标签:
【中文标题】无法选择最后插入的 id 为 [Mysql, php pdo oop] [重复] 的行【英文标题】:not able to select the row where the last inserted id is [Mysql, php pdo oop] [duplicate] 【发布时间】:2021-02-23 02:23:54 【问题描述】:当我尝试从 mysql 表中选择最后插入的 id 时,我遇到了这个问题,我得到 value = bool(true) 而不是 values。
我想做什么:
if (isset($_POST['submit']))
if (isset($_POST['paName']) && isset($_POST['paEmail']) && isset($_POST['paTel']) && isset($_POST['aName']) && isset($_POST['Artnum']))
if (!empty($_POST['paName']) && !empty($_POST['paEmail']) && !empty($_POST['paTel']) && !empty($_POST['aName']) && !empty($_POST['Artnum']))
$paName = $_POST['paName'];
$paEmail = $_POST['paEmail'];
$paTel = $_POST['paTel'];
$aName = $_POST['aName'];
$Artnum = $_POST['Artnum'];
$query = "INSERT INTO crud (paName,paEmail,paTel,aName,Artnum) VALUES ('$paName','$paEmail','$paTel','$aName','$Artnum')";
if ($sql = $this->conn->exec($query))
$id = $this->conn->lastInsertId();
$query = "SELECT * FROM crud WHERE id = '".$id."'";
$stmt=$this->conn->prepare($query);
$stmt->execute();
var_dump($stmt->execute());die();
但是如果我在没有条件的情况下做同样的事情,我会从表中获取所有值,这意味着我的条件是错误的。
你能告诉我我做错了什么吗?
【问题讨论】:
【参考方案1】:您似乎在第一个查询中缺少$this->conn->prepare()
。你可以试试这个例子:
lastInsertId()
仅在 INSERT 查询之后起作用。
正确:
$stmt = $this->conn->prepare("INSERT INTO crud (paName,paEmail,paTel,aName,Artnum)
VALUES(?,?,?,?,?);");
$sonuc = $stmt->execute([$paName,$paEmail,$paTel,$aName,$Artnum]);
$LAST_ID = $this->conn->lastInsertId();
不正确:
$stmt = "INSERT INTO crud (paName,paEmail,paTel,aName,Artnum) VALUES ('$paName','$paEmail','$paTel','$aName','$Artnum')";
$sonuc = $this->conn->execute($stmt);
$LAST_ID = $this->conn->lastInsertId(); //always return string(1)=0
【讨论】:
虽然不是“遗漏”而是特意这样写,但当然是一个prepared statement是应该怎么做的以上是关于无法选择最后插入的 id 为 [Mysql, php pdo oop] [重复] 的行的主要内容,如果未能解决你的问题,请参考以下文章
为啥我无法在 PHP 和 MySQL 中获取最后一个插入 ID?