php - 如何在单个 php 页面中将值插入到不同的表中?

标签 php mysql

我在插入另一个表后在我的表上插入一条记录。这是我的示例代码:

if(isset($_POST['submit'])){
    $database = new Database();
    $db = $database->getConnection();
    $employee = new Employee($db);

    if(!empty($first_name) && !empty($family_name) && !empty($first_name_arabic) && !empty($family_name_arabic)){
        $emp_number = isset($_POST['emp_number']) && !empty($_POST['emp_number']) ? $_POST['emp_number'] : $employee->generateEmployeeNumber();
        $fields = [
            'reference' => $reference,
            'emp_number' => $emp_number,
            'first_name' => $first_name,
            'middle_name' => $middle_name,
            'third_name' => $third_name,
            'family_name' => $family_name,
            'nationality' => $nationality,
        ];

        $employee->createOrUpdate($fields, '');
        $result = $employee->selectOne('Reference', $reference);

        if(!empty($_POST['passport_number']) && !empty($_POST['passport_place_issue']) && !empty($_POST['passport_date_issue']) && !empty($_POST['passport_date_expiry']) && !empty($result['id'])) {
            $passport = new Passport($db);

            $passport_fields = [
                'passport_number' => $_POST['passport_number'],
                'place_issue' => $_POST['passport_place_issue'],
                'date_issue' => date_format(date_create($_POST['passport_date_issue']), 'Y-m-d'),
                'date_expiry' => date_format(date_create($_POST['passport_date_expiry']), 'Y-m-d'),
                'reference' => $result['reference'] ,
                'employee_id' => $result['id'],
                'status' => 'Active',
            ];
            $passport->createOrUpdate($passport_fields, '');
        }
    }
}   

但我的问题是我对 passport 表的插入没有执行任何操作,并且没有错误返回给我。至于creatOrUpdate,我就是这样做的:

function createOrUpdate($fields, $id){
    if(is_null($id) || empty($id)){
        $implodeColumns = implode(', ', array_keys($fields));
        $implodePlaceholder = implode(", :", array_keys($fields));

        $sql = "INSERT INTO " . $this->table_name. "($implodeColumns) VALUES(:".$implodePlaceholder.")";
        echo "SQL ".$sql;
        $stmt = $this->conn->prepare($sql);
        foreach ($fields as $key => $value) {
            $stmt->bindValue(":".$key,$value);
        }
        $stmt->execute();
    }else{}
}

我不知道创建同名的方法是否会影响代码,但员工的 createOeUpdate 方法来自 employee.php,其中 createOrUpdate 护照方法来自 passport.php。只有员工保存在我的数据库中。

非常感谢任何帮助

最佳答案

如果不同文件的名称相同,您需要使用命名空间,例如:

namespace name_of_your_main_file;

// Maybe need to add full path 
// if it's not in the same folder.

use employee; 
use passport; 

// And use it with same names as:
employee::createOrUpdate(

关于php - 如何在单个 php 页面中将值插入到不同的表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56931494/

相关文章:

java - 如何在程序中使用存储在mysql的varchar字段中的utf8mb4符号而不改变mysql的字段

php - 如何在nodejs中实现 "gzencode"(PHP函数)

mysql - 将两个查询变成一个

mysql - 如何在选项卡中传递方法(Ionic 2)

MySQL 按父/子和名称排序

javascript - 在 WordPress 插件开发中使用 javascript 验证

php array_unique() 返回重复项

php - 根据另一个表引用 ID 更新/插入大表记录。

mysql - 基于两个在 MySql 中可以具有相反值的字段删除重复项

mysql - 使用 SQL 查找所有轨道均由同一 Composer 创作的播放列表?