gpt4 book ai didi

php - 在 PHP 中获取 SCOPE_IDENTITY()

转载 作者:可可西里 更新时间:2023-11-01 00:19:37 30 4
gpt4 key购买 nike

一直在尝试获取 SCOPE_IDENTITY()(最后插入数据库的 ID)并将其作为变量存储在我的 PHP 函数中。

查看了我可能在 stackoverflow 上找到的所有答案,但我仍然无法找到答案。

这是我目前拥有的:

// Confirm booking (update database) function
public function insert_userPost($conn)
{
// SQL INSERT command
$sql = ("
INSERT INTO userPost (content, submitted, emotion)
VALUES ('$this->post', 'NOW()', '$this->emotion');
");
if ($conn->query($sql) === TRUE)
{
//echo "success";
$sql = ("SELECT SCOPE_IDENTITY() as Id");
$result = $conn->query($sql);
echo $result;
//header('Location: feed.php?filter=all&page=1');
}
else
{
echo "Error: " . $sql . "<br>" . $conn->error;
}
}

我做错了什么?

编辑:

此外...在构造中我试图在 $this->post 中传递 Id ($this->Id) 但它返回 0。我可以看到这是因为我是仅在查询通过后设置 $this->Id ,从而返回 0 但我不确定如何继续。有什么建议吗?

// Construct
public function __construct($content, $emotion, $conn)
{
$this->content = $content;
$this->emotion = $emotion;
$this->post =
"<div id=\'post\'>
<div id=\'postContent\'>
<p><b>I\'m $this->emotion because</b> $this->Id $this->content<span class=\'emot\'id=\'$this->emotion\'></span></p>
</div>
<div id=\'postInfo\'>
<span class=\'postRelate\' title=\'Click to relate +1\'><p><b>relate</b> (0)</p></span>
<span class=\'postSubmitted\'><p>submitted X minutes ago</p></span>
</div>
</div>";
}

// Confirm booking (update database) function
public function insert_userPost($conn)
{
// SQL INSERT command
$sql = ("INSERT INTO userPost (content, submitted, emotion)
VALUES ('$this->post', NOW(), '$this->emotion')");
if ($conn->query($sql) === TRUE)
{
//echo "success";
echo $this->Id = $conn->insert_id;
//header('Location: feed.php?filter=all&page=1');
}
else
{
echo "Error: " . $sql . "<br>" . $conn->error;
}
}

最佳答案

首先,您的问题被标记为mysql,但是SCOPE_IDENTITY() 是一个SQL Server 函数。也就是说,您的代码包含 $conn->error ,所以我假设您使用的是带有 MySQLi 扩展的 MySQL。

相当于 SQL Server 的 SCOPE_IDENTITY() 的 MySQL 是 LAST_INSERT_ID() .但是调用它需要额外的查询,这很麻烦而且速度较慢。

相反,建议您为此使用内置的 MySQLi 功能,$insert_id您的连接实例的属性:

$id = $conn->insert_id;

大多数 SQL 库都为此内置了功能。如果您使用 PDO 作为您的数据库抽象层,您可以类似地使用 PDO::lastInsertId() :

$id = $pdo->lastInsertId();

这对 SQL Server 和 MySQL(以及其他)都适用。

关于php - 在 PHP 中获取 SCOPE_IDENTITY(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34009259/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com