无法在laravel中插入数据库

时间:2017-08-29 07:34:57

标签: php mysql laravel

我在Laravel Model(类)中有以下代码插入到数据库中, 但我得到错误:“

  

PDOException in ... SQLSTATE [42000]:语法错误...

public function Add_new($Desc, $Cat_Name, $Loc_Name, $Loc_Des, $Comment, $Ven_Name)
    {

        $pdo = DB::connection()->getPdo();
        $stmt = $pdo->prepare('
                INSERT INTO itinv_category (name)
                VALUES (:Cat_Name);

                INSERT INTO itinv_location (name, Description)
                VALUES (:Loc_Name,:Loc_Des);

                INSERT INTO itinv_comment (text)
                VALUES (:Comment);

                INSERT INTO itinv_vendor (name)
                VALUES (:Ven_Name);

                SET @id1 = (SELECT MAX(id) FROM itinv_vendor);
                SET @id2 = (SELECT MAX(id) FROM itinv_comment);
                SET @id3 = (SELECT MAX(id) FROM itinv_location);
                SET @id4 = (SELECT MAX(id) FROM itinv_category);


                INSERT INTO itinv_inventory (category_id,location_id,vendor_id,comment_id,Description)
                VALUES (@id4,@id3,@id1,@id2,:Desc);
        ');
       $stmt->bindValue('Cat_Name', $Cat_Name);
        $stmt->bindValue('Loc_Name', $Loc_Name);
        $stmt->bindValue('Loc_Des', $Loc_Des);
        $stmt->bindValue('Comment', $Comment);
        $stmt->bindValue('Desc', $Desc);

        $stmt->execute();
    }
}

2 个答案:

答案 0 :(得分:0)

您缺少 Ven_Name

$stmt->bindValue('Ven_Name', $Ven_Name);

答案 1 :(得分:0)

我解决了这个问题,它是关于' pdo'哪个不能运行多个Mysql查询,我们需要执行每个查询seperatley,如下所示:

public function Add_new($ Desc,$ Cat_Name,$ Loc_Name,$ Loc_Des,$ Comment,$ Ven_Name)     {

    // var_dump($Desc);

    $stmt1 = '                INSERT INTO itinv_category (name)
                    VALUES (\'' . $Cat_Name . '\')';
    $stmt2 = '
                    INSERT INTO itinv_location (name, Description)
                    VALUES (\'' . $Loc_Name . '\', \'' . $Loc_Des . '\')';
    $stmt3 = 'INSERT INTO itinv_comment (text)
                    VALUES (\'' . $Comment . '\')';
    $stmt4 = '         INSERT INTO itinv_vendor (name)
            VALUES (\'' . $Ven_Name . '\')';
    $stmt5 = 'SELECT MAX(id) AS id FROM itinv_vendor';
    $stmt6 = 'SELECT MAX(id) AS id FROM itinv_comment';
    $stmt7 = 'SELECT MAX(id) AS id FROM itinv_location';
    $stmt8 = 'SELECT MAX(id) AS id FROM itinv_category';


    $pdo = \DB::connection()->getPdo();
    $stmt = $pdo->prepare($stmt1);
    $stmt->execute();

    $stmt = $pdo->prepare($stmt2);
    $stmt->execute();

    $stmt = $pdo->prepare($stmt3);
    $stmt->execute();

    $stmt = $pdo->prepare($stmt4);
    $stmt->execute();

    $stmt = $pdo->prepare($stmt5);
    $stmt->setFetchMode(\PDO::FETCH_ASSOC);
    $stmt->execute();
    $arr = $stmt->fetchAll();
    $Ven_ID = $arr['0']['id'];


    $stmt = $pdo->prepare($stmt6);
    $stmt->setFetchMode(\PDO::FETCH_ASSOC);
    $stmt->execute();
    $arr = $stmt->fetchAll();
    $Comment_ID = $arr['0']['id'];


    $stmt = $pdo->prepare($stmt7);
    $stmt->setFetchMode(\PDO::FETCH_ASSOC);
    $stmt->execute();
    $arr = $stmt->fetchAll();
    $Loc_ID = $arr['0']['id'];


    $stmt = $pdo->prepare($stmt8);
    $stmt->setFetchMode(\PDO::FETCH_ASSOC);
    $stmt->execute();
    $arr = $stmt->fetchAll();
    $Cat_ID = $arr['0']['id'];


    $stmt = $pdo->prepare('INSERT INTO itinv_inventory (category_id,location_id,vendor_id,comment_id,Description)
                    VALUES (:Cat_ID,:Loc_ID,:Ven_ID,:Comment_ID,:Desc)');
    $stmt->bindValue('Cat_ID', $Cat_ID);
    $stmt->bindValue('Loc_ID', $Loc_ID);
    $stmt->bindValue('Comment_ID', $Comment_ID);
    $stmt->bindValue('Ven_ID', $Ven_ID);
    $stmt->bindValue('Desc', $Desc);
    $stmt->execute();

}

}