Проблема вставки двух значений массива в базу данных

0

Вот код, который я использую для загрузки нескольких изображений для каждой записи в базе данных; id, image, name, date. Используя этот код, имя изображения вставляется правильно, но у меня проблема с полем имени. Я хочу вставить имя, используя $product_name= $_POST['pro_name']; но он только вставляет "массив" в поле имени.

<?php
include('../config.php');
if (isset($_POST['submit'])) {
    $product_name = $_POST['pro_name'];

    $j = 0;     // Variable for indexing uploaded image.
    $target_path = "uploads/";     // Declaring Path for uploaded images.
    for ($i = 0; $i < count($_FILES['file']['name']) && $product_name < count($product_name); $i++) {
        // Loop to get individual element from the array
        $validextensions = array("jpeg", "jpg", "png");      // Extensions which are allowed.
        $ext = explode('.', basename($_FILES['file']['name'][$i]));   // Explode file name from dot(.)
        $file_extension = end($ext); // Store extensions in the variable.
        $target_path = $target_path . md5(uniqid()) . "." . $ext[count($ext) - 1];     // Set the target path with a new name of image.
        $j = $j + 1;      // Increment the number of uploaded images according to the files in array.
        if (($_FILES["file"]["size"][$i] < 100000000)     // Approx. 100kb files can be uploaded.
                && in_array($file_extension, $validextensions)) {

            if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $target_path)) {

                $finel_name = explode('/', $target_path);
                $image_name_final = $finel_name[1];
                $jajsj = "insert into spec_product set image='$image_name_final', name='$product_name'";
                $janson = mysql_query($jajsj) or die(mysql_error());
                // If file moved to uploads folder.
                echo $j . ').<span id="noerror">Image uploaded successfully!.</span><br/><br/>';
            } else {     //  If File Was Not Moved.
                echo $j . ').<span id="error">please try again!.</span><br/><br/>';
            }
        } else {     //   If File Size And File Type Was Incorrect.
            echo $j . ').<span id="error">***Invalid file Size or Type***</span><br/><br/>';
        }
    }
}
?>
Теги:
arrays

2 ответа

0
Лучший ответ

заменить в своем коде

for ($i = 0; $i < count($_FILES['file']['name']); $i++)
    {

и добавьте это перед выполнением запроса

$product_name_final= $product_name[$i];
  • 0
    Спасибо за помощь своей работы
1

Значение вводится как массив, потому что переменная $ product_name не является строкой, а массивом. Всякий раз, когда используется массив, в котором ожидалась строка, например: конкатенация строки или в вашем случае запрос: добавление в spec_product set image = '$ image_name_final', name = '$ product_name' "; PHP автоматически преобразует массив в его значение по умолчанию "Массив".

Убедитесь, что $ product_name не является массивом, а строкой, содержащей имя продукта, который вы хотите вставить в таблицу.

С уважением, Нитин Тхакур

  • 0
    спасибо nitin, но я также использую для ** ($ i = 0; $ i <count ($ _ FILES ['file'] ['name']) && $ product_name <count ($ product_name); $ i ++) ** в цикл для подсчета массива, где я не прав

Ещё вопросы

Сообщество Overcoder
Наверх
Меню