Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从插入的数据中获取id_Php_Mysql_Codeigniter - Fatal编程技术网

Php 从插入的数据中获取id

Php 从插入的数据中获取id,php,mysql,codeigniter,Php,Mysql,Codeigniter,我的数据通过ajax插入,然后插入php函数 我希望在插入数据后,用户可以单击预览按钮, 并将被重定向到一个动态页面,其中数据将从数据库中提取 基于id。此时,查询字符串中的id没有得到任何信息 我有: <?php class Campaign { public $int_campaign_id; public function Insert($title,$desc,$cat,$type){ $_title = $t

我的数据通过ajax插入,然后插入php函数 我希望在插入数据后,用户可以单击预览按钮, 并将被重定向到一个动态页面,其中数据将从数据库中提取 基于id。此时,查询字符串中的id没有得到任何信息

我有:

   <?php

       class Campaign {

     public $int_campaign_id;


    public function Insert($title,$desc,$cat,$type){

            $_title = $this->db->mysqli->real_escape_string($title);
            $_desc = $this->db->mysqli->real_escape_string($desc);
            $_cat = $this->db->mysqli->real_escape_string($cat);
            $_type = $this->db->mysqli->real_escape_string($type);
            $sql = "INSERT INTO mytable VALUES(NULL,
                     '{$_title}','{$_desc}','{$_cat}','{$_type}', NOW())";

                $result = $this->db->mysqli->query($sql);

                if(!$result)
                {
                        throw new Exception("Query failed!" . $sql . " " . $this->db->mysqli->error);

                }else{
                    $this->int_campaign_id = $this->db->mysqli->insert_id;

            }  

          }
            .....

我不知道MySQL连接使用什么变量名。但是,
$|连接变量|->insert_id
应该获得刚才插入的id

你看过报纸了吗


我还建议使用预先准备好的语句来防止SQL注入。

在创建活动对象后,在按钮代码中不调用
$camp->insert(…args…
)。 应该是

<?php
    $camp = new Campaign();
    $camp->insert(...args...)
    $campaign_id2 = $camp->int_campaign_id;
...

如果您使用的是MySQLi,那么您真的应该在准备好的语句中使用bind变量。。。。但是你的班级叫
MyClass
还是
Campaign
?你到底在哪里调用
Insert()
方法呢?旁注:嗨,我能知道你在哪里找到使用mysqli的codeigniter吗?它叫做活动!调用Insert方法将运行整个Insert函数,不是吗?是的,调用Insert方法将运行整个Insert方法,如果成功,则执行Insert并设置id值,如果不成功,则引发异常:不调用它将根本不会运行。谢谢您的回复。但这不会再次运行整个insert方法吗?创建obj不会运行insert方法。你必须调用它并给出参数。我忘了提到,有两个按钮,一个用于插入活动,另一个用于预览,这就是问题所在。对不起,我无法理解。无论哪种方式,当您想要插入时,都要像这里一样创建一个obj,调用它的insert方法,然后在您提供的第二个代码段中使用相同的obj($camp)并使用obj->campaign_id。这就是我的问题,insert方法是通过ajax在另一个php文件中调用的。如何从该文件返回insert_id?这是个问题
<?php
    $camp = new Campaign();
    $camp->insert(...args...)
    $campaign_id2 = $camp->int_campaign_id;
...