Я не могу работать со значениями SQL, вставленными PHP

я вставил значения SQL в таблицы с PHP, которые раньше читали файл .txt.

Дело в том, что я не могу работать с этими значениями.

PHP читает файл .txt '8,00' и правильно вставляет это значение в базу данных, но если я выполню strlen(), он вернет 6, а tu вернет 4.

текстовое сообщение: текст в .txt

if (in_array($fileActualExt, $allowed)){
    if ($fileError == 0){
        if ($fileSize > 5000){
            echo "Tu archivo es muy grande!";
        } else{
            $fileNameNew = uniqid('', true).".".$fileActualExt;
            $fileDestination = 'uploads/'.$fileNameNew;
            move_uploaded_file($fileTmpName, $fileDestination);
            $file = fopen("uploads/$fileNameNew","r");
            if ($file) {
                if (($line = fgets($file)) !== false) {
                    $ram = $line;
                }
                if (($line = fgets($file)) !== false) {
                    $cpu = $line;
                }
                if (($line = fgets($file)) !== false) {
                    $so = $line;
                }
                if (($line = fgets($file)) !== false) {
                    $gpu = $line;
                }
                if ($i=1) {
                    $sql = "INSERT INTO comparar (ram,cpu,gpu,so) VALUES ('$ram','$cpu','$gpu','$so')";
                    $conn->query($sql);
                }
                session_start();
                $session_array2 = array($ram,$cpu,$gpu,$so);
                $_SESSION['nombre2'] = $session_array2;
                fclose($file);

Марк, правильно ли настроены поля SQL? Что повторяет значение, если вы извлекаете его обратно из базы данных? Для меня «8,00» — это 6 символов, а 8,00 — это 4 символа, если вы читаете это как строку. Вы можете это прояснить?

kissumisha 09.05.2022 01:04

@kissumisha Я не могу получить какое-либо значение, вставленное с помощью PHP, из базы данных. Я имею в виду, что одна из строк, которая считывает PHP из txt-файла, имеет значение 8.00 и, очевидно, имеет 4 символа, но прежде чем я помещу ее в базу данных из PHP, я делаю strlen($ram), которая имеет значение 8.00. и это показывает мне, что его длина равна 6, поэтому он добавляет в базу данных 8,00 с длиной 6, из которых 2 «невидимы».

Marc Gil Albiñana 09.05.2022 01:41
php.net/manual/en/function.fgets.php: "Чтение заканчивается, когда длина - 1 байт был прочитан, или новая строка (которая включается в возвращаемое значение), или [...]" - И 8,00 плюс \r и \n будут составлять символы шесть.
CBroe 09.05.2022 11:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Спасибо за пояснение выше. Кажется, что когда вы извлекаете текст из txt-файла, вы также извлекаете символ новой строки \n.

Очистите значение, которое вы хотите вставить, например:

strlen(str_replace(array("\n", "\r\n", "\r"), '', $ram));

Теперь это должно вернуть правильную длину для значения, с которым вы пытаетесь работать.

Это должно быть похоже на $ram2 = str_replace("\r\n","",$ram); для меня, но ты мне очень помог, чувак, большое тебе спасибо <3.

Marc Gil Albiñana 09.05.2022 02:51

Если вы довольны решением, пожалуйста, примите его, чтобы оно помогло другим в будущем. Привет!

kissumisha 09.05.2022 03:45

Но пожалуйста начинают работать с подготовленными операторами, потому что код подвержен SQL-инъекциям.

Honk der Hase 09.05.2022 09:44

Другие вопросы по теме

Похожие вопросы

Изменить ссылку на продукт цикла WooCommerce на основе настраиваемого поля
Как я могу проверить в PHP, находится ли индекс ассоциативного массива в последовательности или нет, и вызвать исключение, если индексированный массив не в последовательности?
Как сделать задание на сохранение объекта в формате json в базе данных в Laravel?
Конкретная функция для массива Unflatten
Когда я пытаюсь запустить свой код в Chrome, я вижу код, который я сделал в phpstorm, а не функцию, которую он должен выполнять
Какой формат отметки времени это 1651928421543667000
Ваши требования не могут быть разрешены для устанавливаемого набора пакетов, я получаю эту ошибку, когда пытаюсь установить livewire
Как создавать вложенные формы в Symfony
Как предотвратить повторение одного и того же значения параметра выбора в цикле php
Как отобразить сообщение об ошибке или перенаправить пользователя на страницу, если идентификатор отслеживания неверен или недействителен