php - 阅读 SELECT LAST_INSERT_ID(),这似乎产生了一个数组

标签 php mysql sql

我正在使用 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() .

有关说明和代码示例,请参阅文档。

关于php - 阅读 SELECT LAST_INSERT_ID(),这似乎产生了一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57761459/

相关文章:

php - 使用 Ajax 将 mysql 值回显到表中

php添加SSL证书

php - 为什么/如何连接导致 XSS 或 SQL 注入(inject)漏洞?

php - AS2 多字符串替换

php - 与之前的 SELECT 语句相比,从 MySQL 数据库中选择剩余的项目

mysql - 从 xls 电子表格创建 MySQL 表

mysql - 在 MySQL 上以嵌套方式进行内部连接

mysql - 为用户分配电影列表

mysql - 如果最后一条记录包含相同的值则更新,否则插入

php - 解析多行声明版本和编码的 XML 文档时出现 SimpleXML 错误