首页 > 解决方案 > 从表单插入数据的查询条件

问题描述

我想做的是:

如果我的表单中输入的年龄 = 28、30、25 或 21,那么我想在列 (VE) 中自动插入值 8,否则将其保留为空。这是正确的方法吗?

if($form_data->action == 'Insert')
        {

            $age=array(28, 30, 25, 21);
            $age_str=implode("','", $age);

                if($form_data->age == $age_str){

                $query="INSERT INTO tbl
                        (VE) VALUE ('8') WHERE id= '".$form_data->id."'
                ";
                    $statement = $connect->prepare($query);
                    $statement->execute();
            }
            $data = array(
                ':date'             =>  $date,
                ':first_name'       =>  $first_name,
                ':last_name'        =>  $last_name,
                ':age'          =>  $age
            );
            $query = "
            INSERT INTO tbl
                (date, first_name, last_name, age) VALUES 
                (:date, :first_name, :last_name, :age)
            ";
            $statement = $connect->prepare($query);


            if($statement->execute($data))
            {
                $message = 'Data Inserted';
            }
        }


另外,如何插入带有来自其他表单数据的行 ID的新行tbl

标签: phpmysqlpdo

解决方案


使用php 的 in_array而不是尝试比较字符串。要获取插入表单数据的查询的 id,您可以从准备好的语句返回插入行的 id

if ($form_data->action == 'Insert') {

    // assuming $age, $date, $first_name, $last_name
    // already declared prior to this block
    $data = array(
      ':date'             =>  $date,
      ':first_name'       =>  $first_name,
      ':last_name'        =>  $last_name,
      ':age'          =>  $age
    );

    $query = "
      INSERT INTO tbl
        (date, first_name, last_name, age) VALUES 
        (:date, :first_name, :last_name, :age)
    ";
    $statement = $connect->prepare($query);

    if ($statement->execute($data)) {
        $message = 'Data Inserted';

        // $id is the last inserted id for (tbl)
        $id = $connect->lastInsertID();

        // NOW you can insert your child row in the other table
        $ages_to_insert = array(28, 30, 25, 21);

        // in_array uses your array...so you don't need
        // if($form_data->age == $age_str){

        if (in_array($form_data->age, $ages_to_insert)) {

            $query="UPDATE tbl SER VE = '8' WHERE id= '".$id."'";
            $statement2 = $connect->prepare($query);
            $statement2->execute();
        }
    }
}

推荐阅读