我是PHP的新手。我正在尝试我已经执行插入,我将不得不抓住它的id,所以我使用; insert_lastid();函数与mysqli_last_insert_id相同,所以不要混淆它。我试图在最后一个id的基础上保存最后一个id我将在另一个函数中执行select操作 这是代码,它将更清楚我的问题。此功能用于插入
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();
}
答案 0 :(得分:2)
未设置ID的原因是您在设置变量之前有return
语句。当您点击return
语句时,该函数将停止执行。移动代码,以便在函数返回之前完成变量赋值。
$insert = $this->insert();
$this->car=insert_lastid();
return $insert;
您的global $car
语句和cars_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
变量,或使用预准备语句。