[英]Reading SELECT LAST_INSERT_ID(), which seems to produce an array
我正在使用PHP和SQL语言填充MySQL数据库。 我正在填充的表称为项目。 将记录添加到项目后,我想发送一封电子邮件,其中包含project_id和project_title。 因此,在填充项目表后,我需要知道project_id。
命令:$ sql =“ SELECT LAST_INSERT_ID()”; 返回一个数组。 我已经对阵列中的内容进行了几次猜测,没有任何运气。
public function add_project($project_title, $project_description,
$skill_cat_id, $name_id) {
$dbConn = new DatabaseConn();
$this->name_id = $name_id;
$this->skill_cat_id = $skill_cat_id;
if($this->check_for_duplicates() != null) {
$message = "This Project already exist!";
echo "<script type='text/javascript'>alert('$message');</script>";
} else {
$sql = "INSERT INTO project "
. "(project_id, project_title, project_start_date, "
. "project_description, skill_cat_id, volunteer_id, response_id, name_id) "
. "VALUES (DEFAULT, $project_title, DEFAULT, "
. "$project_description, $skill_cat_id, DEFAULT, DEFAULT, $name_id)";
try {
$dbConn->exec($sql);
}
catch(PDOException $e) {
$message = $sql . "<br />" . $e->getMessage();
echo "<script type='text/javascript'>alert('$message');</script>";
}
$dbConn2 = new DatabaseConn();
$sql = "SELECT LAST_INSERT_ID()";
try {
$statement = $dbConn2->prepare($sql);
$statement->execute();
$result = $statement->fetch();
$statement->closeCursor();
}
catch(PDOException $e) {
$message = $sql . "<br />" . $e->getMessage();
echo "<script type='text/javascript'>alert('$message');</script>";
}
return $result;
}
}
我期望项目表的project_id,但命令返回一个数组。
PDOStatement::fetch()
始终返回一个数组,该数组是结果集的一行。 该数组可以是按列名索引的序数数组或哈希数组。
确保查询具有一列和一行都没关系。 它仍然是结果集,为此fetch()
返回一个数组。 它返回的数组只有一个条目,对应于查询的单列。
如果只想返回一列作为标量,请尝试PDOStatement :: fetchColumn() 。
请参阅文档以获取描述和代码示例。
您可以从pdo对象本身获取最后的插入ID。 https://www.php.net/manual/en/pdo.lastinsertid.php
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.