Форумы портала PHP.SU » PHP » Программирование на PHP » Не находит существующие значения в базе

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

1. Nematod - 28 Февраля, 2021 - 17:23:01 - перейти к сообщению
Всем привет.
Суть проблемы:
_ загружаю на сервер файл .csv с целью обновить цены в магазине
_ файл содержит только артикул и цену товара
_ извлекаю содержимое файла (артикул) и ищу в базе (MySql) соответствующее значение
_ артикулы представлены только цифрами без букв (к примеру 11033)
_ в итоге процентов 10 записей он не находит, но они точно есть
_ Field (article) | Type (varchar) | Collation (utf8_general_ci)
2. Vladimir Kheifets - 01 Марта, 2021 - 17:22:49 - перейти к сообщению
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)."$'";
Удачи!
3. don.bidon - 04 Марта, 2021 - 13:57:06 - перейти к сообщению
Vladimir Kheifets пишет:

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

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

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

 

Powered by ExBB FM 1.0 RC1