簡體   English   中英

如何插入或更新多行-PDO

[英]How to insert or update multiple rows - PDO

我對PDO基地的要求有一個小問題。

我想在一個請求中插入或更新字段。 我想向數據庫中插入一些記錄,但是如果已經有具有所選名稱的“ file_name”字段,則僅用於更新其他字段。 下面粘貼我的php代碼。

例如:我添加5條記錄id_product(例如1)和其他各個字段。 從$ _post引用的示例字段:

(id_product, alt, file_name, main_photo)
1, xxx, 1_1, 0;
1, xxx, 1_2, 0;
1, xxx, 1_3, 1;

我的PHP代碼:

$query = "INSERT INTO product_image (id_product, alt, file_name, main_photo) VALUES ";
        $part = array_fill(0, count($_POST['file_name']), "(?, ?, ?, ?)");
        $query .= implode(",", $part);
        $query .= " ON DUPLICATE KEY UPDATE alt=VALUES(alt), main_photo=VALUES(main_photo)";
        $stmt = $this->_db->prepare($query);

$j = 1;
            $im_null = 0;
            for ($i = 0; $i < count($_POST['file_name']); $i++) {
                $stmt->bindParam($j++, $_POST['id_product'], \PDO::PARAM_INT);
                $stmt->bindParam($j++, $_POST['alt'][$i], \PDO::PARAM_STR);
                $stmt->bindParam($j++, $profile->base64_to_jpeg($_POST['file_name'][$i], APP_ROOT . '/uploads/products/' . $_POST['id_product'] . '_' . $_POST['file_nr'][$i]), \PDO::PARAM_STR);
                ($_POST['main_photo'][$i] == 1) ? $stmt->bindParam($j++, $_POST['main_photo'][$i], \PDO::PARAM_INT) : $stmt->bindParam($j++, $im_null);
            }
            $stmt->execute();

在此查詢中,插入效果很好,但不會更新,這是請求的第二部分。

移動$j = 1; 內部循環,因為它是您繼續增加$j

$im_null = 0;
for ($i = 0; $i < count($_POST['file_name']); $i++) {
    $j = 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM