php - PDO 插入查询不将数据插入数据库?

标签 php mysql pdo

我有以下代码,第一次插入工作正常,数据进入数据库,但依赖于 last_insert_id() 的第二次插入查询失败。我试图找出错误但没有这样做?

<?php
namespace Solutions\File;
class AddUserData {
    function __construct($DB_con)
   {
     $this->db = $DB_con;
   }
    public function insert_detail($productDetails){
      var_dump($productDetails);
    try
       {
            $stmt = $this->db->prepare("INSERT INTO product_master(reg_id,category_id,sub_cat_id,product_name)  VALUES(:reg_id,:category_id,:sub_cat_id,:product_name)");
            $query=$this->db->prepare("INSERT INTO gy_product_detail(product_id,product_detail,"
                    . "product_image_back,product_image_left,product_image_name,product_image_right,"
                    . "product_rate,product_discount) VALUES (last_insert_id(),:product_details,"
                    . ":product_image1,:product_image2,:product_image3,:product_image4,"
                    . ":rate,:discount");
            $stmt->execute(array(':reg_id'=>$productDetails['registration_id'],
                ':category_id'=>$productDetails['catagory_id'],
                ':sub_cat_id'=>$productDetails['sub_cat_id'],
                ':product_name'=>$productDetails['product_name']));
            $query->execute(array(
                ':product_details'=>$productDetails['product_details'],
                ':product_image1'=>$productDetails['image1']['name'],
                ':product_image2'=>$productDetails['image2']['name'],
                ':product_image3'=>$productDetails['image3']['name'],
                ':product_image4'=>$productDetails['image4']['name'],
                ':rate'=>$productDetails['product_cost'],
                ':discount'=>$productDetails['product_discount']));
            return $stmt;
       }
       catch(PDOException $e)
       {
           echo $e->getMessage();
       }
    }
}

任何人都可以指导我错在哪里并指出正确的方向,我没有收到任何错误,但是我启用了错误报告?

我提到的一些链接: MySQL- Why is LAST_INSERT_ID() not working for me? MySQL: LAST_INSERT_ID() returns 0

最佳答案

你必须查询最后一个id: 选择 last_insert_id()

将您的第二个查询更改为:

        $query=$this->db->prepare("INSERT INTO gy_product_detail(product_id,product_detail,"
                . "product_image_back,product_image_left,product_image_name,product_image_right,"
                . "product_rate,product_discount) VALUES ((select last_insert_id()),:product_details,"
                . ":product_image1,:product_image2,:product_image3,:product_image4,"
                . ":rate,:discount");

关于php - PDO 插入查询不将数据插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34547443/

相关文章:

php - MySQL行组查询

php - 来自 MySQL DB 的 AngularJS 值

PHP 准备语句...将变量绑定(bind)为 REGEXP 中的数字范围?

php - 如何使用 PDO 准备好的语句使用链接中的 id 号从行获取数据

php - 使用 phpexcel 从 mysql 数据库创建 excel 报告

php - 下拉 onchange 调用 PHP 函数

php mysql 从2个表中选择计数

php - 计算一列中所有数字的总和

php - 无法让 PHP 在 Vista 64 上与 MySQL 一起工作

php - MySQL:如何按时间戳搜索但首先转换时区?