将一个函数变量作为参数传递给Class的另一个函数

时间:2013-07-04 05:27:34

标签: php

我是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();
}

1 个答案:

答案 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变量,或使用预准备语句。