PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Не находит существующие значения в базе данных MYSQL
Nematod
Отправлено: 28 Февраля, 2021 - 17:23:01
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Февр. 2021  


Помог: 0 раз(а)




Всем привет.
Суть проблемы:
_ загружаю на сервер файл .csv с целью обновить цены в магазине
_ файл содержит только артикул и цену товара
_ извлекаю содержимое файла (артикул) и ищу в базе (MySql) соответствующее значение
_ артикулы представлены только цифрами без букв (к примеру 11033)
_ в итоге процентов 10 записей он не находит, но они точно есть
_ Field (article) | Type (varchar) | Collation (utf8_general_ci)
 
 Top
Vladimir Kheifets
Отправлено: 01 Марта, 2021 - 17:22:49
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 870
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Nematod пишет:
Всем привет.
Суть проблемы:
_ загружаю на сервер файл .csv с целью обновить цены в магазине
_ файл содержит только артикул и цену товара
_ извлекаю содержимое файла (артикул) и ищу в базе (MySql) соответствующее значение
_ артикулы представлены только цифрами без букв (к примеру 11033)
_ в итоге процентов 10 записей он не находит, но они точно есть
_ Field (article) | Type (varchar) | Collation (utf8_general_ci)

Добрый день!
Извлекаемое содержимое "артикул" может содержать лишние символы, например, пробелы.
Примените функцию trim, чтобы их убрать.
Если, в Field (article) только цифры, без букв то, почему Type (varchar)?
Допустим, что в Field (article) всё таки есть не только цифры, например, "abc11033", тогда напишите:
$query="SELECT ..... WHERE article REGEXP '".trim($article)."$'";
Удачи!
 
 Top
don.bidon
Отправлено: 04 Марта, 2021 - 13:57:06
Post Id


Гость


Покинул форум
Сообщений всего: 76
Дата рег-ции: Март 2019  


Помог: 2 раз(а)




Vladimir Kheifets пишет:

Извлекаемое содержимое "артикул" может содержать лишние символы, например, пробелы.
Примените функцию trim, чтобы их убрать.
Если, в Field (article) только цифры, без букв то, почему Type (varchar)?
Допустим, что в Field (article) всё таки есть не только цифры, например, "abc11033", тогда напишите:
$query="SELECT ..... WHERE article REGEXP '".trim($article)."$'";
Удачи!

1) и устроить через CSV-файл SQL-инъекцию )))
2) предположим, что в таблице лям записей, поле `article` было индексное, прощайте индексы )))

Ну и к ТС, с английского "article" переводится как "статья", есть общепринятое "sku", но если поделие, которому обновляете базу, досталось по наследству, тогда не Вам замечание.

(Отредактировано автором: 04 Марта, 2021 - 13:57:42)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB