当前位置: 首页 > 知识库问答 >
问题:

无法选择最后插入的id为[Mysql,php pdo oop][duplicate]的行

宋涵忍
2023-03-14

当我尝试从Mysql表中选择最后一个插入的id时,我遇到了这个问题,我得到的是值=bool(true)而不是这些值。

我要做的是:

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个答案

裴俊雅
2023-03-14

您似乎在第一个查询中缺少$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
 类似资料:
  • 问题内容: 我有以下查询: 我想要插入或更新的ID。通常我运行第二个查询以获取此信息,因为我相信insert_id()仅返回“插入的” ID,而不返回更新的ID。 有没有一种方法可以在不运行两个查询的情况下进行INSERT / UPDATE和检索行ID? 问题答案: 检出此页面:https : //web.archive.org/web/20150329004325/https : //dev.m

  • 问题内容: 我正在插入一条记录,我想使用插入的最后一条记录的ID。这是我尝试过的: 我收到错误消息: SQL语法错误;请查看与您的MySQL服务器版本相对应的手册,以在“ SELECT LAST_INSERT_ID()”附近使用正确的语法。谁能告诉我我的错误在哪里?谢谢! 问题答案: 签出mysql_insert_id() 在mysql_query()命令中执行INSERT语句后运行该函数时,其结

  • 问题内容: 美好的一天, 我愿意检索Mysql中新插入的行的id值。 我知道有mysqli_insert_id函数,但是: 我无法指定表格 如果同时进行查询,则可能有检索错误ID的风险。 我正在使用node.js MySQL 我不想冒着查询最高ID的风险,因为有很多查询,这可能会给我一个错误的查询… (我的ID列是自动递增的) 问题答案: https://github.com/mysqljs/my

  • 我有个问题。我似乎无法从MySQL数据库/表中获取最后插入的记录/id。我想从“tag_id”列返回最后一个插入的id,但我没有得到任何返回。顺便说一下,我正在使用DBO。我尝试了“mysql\u insert\u id”和“lastInsertId”,但没有成功。 我的数据库表看起来像这样: 表名:gitags_标签 我的PHP如下所示(在本例中,我希望返回'440'): 非常感谢您的帮助。

  • 问题内容: 我正在使用MySql Connector .net,我需要获取上一次查询生成的插入ID。现在,我假设返回值应该是最后一个插入ID,但它只返回1。 我使用的代码是: 但是总是1。我尝试创建MySql连接并手动打开/关闭,这导致了相同的行为 问题答案: 1是受查询影响的记录数,此处仅插入一行,因此1返回 为了获取插入行的ID,必须在sqlserver和MySql中使用

  • 问题内容: 我想知道是否可以运行这样的请求: 这个想法是用t1的一些数据填充t2,但是我在语法上一定是错误的。 谢谢你的帮助 问题答案: 从语句插入时不使用关键字。