База данных не вставляет данные при попытке загрузить 2 файла в отдельные строки, и при этом файлы не загружаются в установленные каталоги, какое-либо возможное исправление? - PullRequest
0 голосов
/ 30 октября 2018

Я пришел к выводу, что мой последний вопрос не был очень ясным. Я пытаюсь загрузить два файла в 2 разные строки в моей базе данных MYSQL, но когда я выполняю код, файлы не загружаются и их пути не регистрируются. Запрос просто не исключает, он даже не вставляет данные, которые не являются путями файлов. В любом случае, вот код для переменных, массивов и запроса:

if (isset($_POST['bsw'])) {
        $name1 = str_replace("<","&lt;",$_POST['name']);
        $name = mysqli_real_escape_string($conn, $name1);

        $powers1 = str_replace("<","&lt;",$_POST['powers']);
        $powers = mysqli_real_escape_string($conn, $powers1);

        $weaknesses1 = str_replace("<","&lt;",$_POST['weaknesses']);
        $weaknesses = mysqli_real_escape_string($conn, $weaknesses1);

        $about1 = str_replace("<","&lt;",$_POST['about']);
        $about = mysqli_real_escape_string($conn, $about1);

        $available1 = str_replace("<","&lt;",$_POST['available']);
        $available = mysqli_real_escape_string($conn, $available1);

        $demoFiletype1 = str_replace("<","&lt;",$_POST['filetype']);
        $demoFiletype = mysqli_real_escape_string($conn, $demoFiletype1);

        $iconDir = "files/uploads/bsw/icons/";
        $iconName = basename($_FILES['icon']['name']);
        $iconTemp = $_FILES['icon']['tmp_name'];
        $iconError = $_FILES['icon']['error'];
        $iconType = explode('.', $iconName);
        $iconActualType = strtolower(end($iconType));
        $iconAllowed = array('png', 'jpeg', 'jpg', 'gif');

        $owner = $user->data['username'];
        $ownerId = $user->data['user_id'];

        $allowTypes = array('jpg','png','jpeg','gif');

        $demoDir = "files/uploads/bsw/demos/";
        $demoName = basename($_FILES['demo']['name']);
        $demoTemp = $_FILES['demo']['tmp_name'];
        $demoError = $_FILES['demo']['error'];
        $demoType = explode('.', $demoName);
        $demoActualType = strtolower(end($demoType));
        $demoAllowed = array('swf', 'mp4');

        if (empty($name) || empty($powers) || empty($weaknesses) || empty($about) || empty($iconName)){
            echo '<p style="color: red; margin-left: 10px; margin-top: 5px;">Please Fill in All Fields</p>';
        } else {
            if(!in_array($iconActualType, $iconAllowed)) {
                if($iconError === 1) {
                    echo '<p style="color: red; margin-left: 10px; margin-top: 5px;">Invalid filetype, only PNG, JPEG, JPG and GIF are allowed.</p>';
                } else {
                        $iconNameNew = uniqid('', true).".".$iconActualType;
                        $iconDestination =  __DIR__ . "files/uploads/bsw/icons/" . $iconNameNew;
                        $iconUpload = move_uploaded_file($iconTemp, $iconDestination);
            if(!in_array($demoActualType, $demoAllowed)) {
                if($demoError === 1) {
                    echo '<p style="color: red; margin-left: 10px; margin-top: 5px;">Invalid filetype, only SWF and MP4 are allowed.</p>';
                } else {
                        $demoNameNew = uniqid('', true).".".$demoActualType;
                        $demoDestination =  __DIR__ . "files/uploads/bsw/demos/" . $demoNameNew;
                        $demoUpload = move_uploaded_file($demoTemp, $demoDestination);
                        $fileUpload = mysqli_real_escape_string($iconUpload, $demoUpload);
                if ($fileUpload) {
                    $sql = ("INSERT INTO
                                    bsw
                                    (`bsw_name`, `bsw_about`, `bsw_points`, `bsw_demo_location`, `bsw_power`, `bsw_weaknesses`, `bsw_icon_location`, `bsw_availability`, `bsw_owner`, `bsw_owner_id`, `bsw_type`)
                                    VALUES
                                    ('$name', '$about', '0', '$demoDestination', '$powers', '$weaknesses', '$iconDestination', '$available', '$owner', '$ownerId', '$demoFiletype')");
                    mysqli_query($conn, $sql) or die("Error : ".mysqli_error($conn));
print_r($_FILES);
        } else {
            echo "Error uploading files, please try again later.";
}
    }
}
}
}
}
}

А вот и форма:

<form action="" method="post" enctype="multipart/form-data">
   <input style="margin-left: 10px; margin-top: 5px;" type="text" name="name" placeholder="BSW Name"><br>
   <textarea style="margin-left: 10px; margin-top: 5px; width: 200px; height: 80px;" type="text" name="powers" placeholder="BSW Powers (seprated by commas)"></textarea>
   <br>
   <textarea style="margin-left: 10px; margin-top: 5px; width: 200px; height: 80px;" type="text" name="weaknesses" placeholder="BSW Weaknesses (seprated by commas)"></textarea>
   <br>
   <textarea style="margin-left: 10px; margin-top: 5px; width: 250px; height: 80px;" type="text" name="about" placeholder="BSW About (seprated by commas)"></textarea>
   <br>
   <strong>Are you currently available?</strong>
   <select name="available">
      <option name="yes">yes</option>
      <option name="no">no</option>
   </select>
   <br><br>
   <strong>Icons bigger than 100x100 will be rescaled</strong><br>
   <input style="margin-left: 10px; margin-top: 5px;" type="file" name="icon"><br>
   <strong>Demonstration (Only supports swf and mp4 filetypes): </strong><br>
   <input style="margin-left: 10px; margin-top: 5px;" type="file" name="demo"><br><br>
   <strong>Demo Filetype (Select none if you do not have a demo)</strong><br>
   <select name="filetype">
      <option name="mp4">mp4</option>
      <option name="swf">swf</option>
      <option name="none">none</option>
   </select>
   <br><br>
   <button style="margin-left: 10px; margin-top: 5px;" type="submit" name="bsw">Submit BSW</button><br>
</form>

Любая помощь приветствуется!

EDIT: Несмотря на то, что справка по подготовленному заявлению велика, и я действительно ценю ее, запрос по-прежнему не выполняется из-за того, что скрипт загрузки файла не выполняется первым, поэтому мне по-прежнему нужна помощь, поскольку я совершенно ошарашен.

1 Ответ

0 голосов
/ 31 октября 2018

Как сказал JNevill, поскольку вы используете mysqli, вам, вероятно, следует использовать параметры привязки:

$ sql = $ connection-> prepare ("INSERT INTO bsw (bsw_name, bsw_about, bsw_points, bsw_demo_location, bsw_power, bsw_weakness, bsw_icon_location, bsw_availability, bsw_owner, bsw_owner_id, bsw_type) ЗНАЧЕНИЯ ") (,,,,,,,,,,???????);

$ sql-> bind_param ("sssssssssis", $ name, $ about, '0', $ demoDestination, $ powers, $ слабые стороны, $ iconDestination, $ available, $ owner, $ ownerId, $ demoFiletype);

$ sql-> Execute ();

// в bind_param "s" представляет "строковый тип", "i" представляет "целочисленный тип". Глядя на ваши переменные, это типы, я предполагаю, что они находятся в таком порядке. Обратите внимание на кавычки или отсутствие кавычек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...