0

我是 PHP 新手。我正在尝试什么我已经执行了插入,我将不得不抓住它的 id,所以我使用了 ;insert_lastid(); 与 mysqli_last_insert_id 相同的函数,所以不要混淆它。我试图根据最后一个 id 保留最后一个 id 我将在另一个函数中执行选择操作这里的代码可以更清楚地解决我的问题。此功能用于插入

public function cars_insert($_POST,$path) {
    $this->insert_query="insert into `_cars` (`_year`,`_make`,`_model`,`_version`,`_city`,`_color`,`_mileage`,`_engine_capacity`,                                                                                 `_engine_type`,`_assembly`,`_image`)VALUES('" .$_POST['year'] . "','" .$_POST['make'] . "','" .$_POST['model'] . "','" .$_POST['version'] . "','" .$_POST['city'] . "','" .$_POST['color'] . "','" .$_POST['mileage'] . "','" .$_POST['engine_capacity'] . "','" .$_POST['engine_type'] . "','" .$_POST['assembly'] . "','" .$path . "')";
    return $this->insert();
    global $car;
    $this->car=insert_lastid();
}

这是它将根据以下选择的第二个功能insert_lastid();

 public function cars_id($this->car){
    $this->select_query="SELECT * FROM `_cars` WHERE `_id`='$this->car'";
    return $this->select();
}
4

1 回答 1

2

未设置 ID 的原因是您return在设置变量之前有一个语句。在您点击语句的那一刻return,函数停止执行。移动您的代码,以便在函数返回之前完成变量赋值。

$insert = $this->insert();
$this->car=insert_lastid();

return $insert;

您的global $car语句和参数 incars_id都是不必要的,因为它们$this->car是类的成员,并且可以从该类的任何成员函数访问,而不必像使用普通变量那样传入或全局化。

public function cars_id(){
    $this->select_query="SELECT * FROM `_cars` WHERE `_id`='$this->car'";
    return $this->select();
}

附带说明一下,您的代码目前极易受到SQL 注入攻击,除非您有某种代码在$this->insert()运行 SQL 语句之前对其进行检查。确保在查询中使用它们之前正确转义所有$_POST变量,或者使用准备好的语句。

于 2013-07-04T05:32:09.043 回答