Поиск уникальных комбинаций переменных символов в заданном входе

Во-первых, вы должны проверить, является ли ваш столбец изображения типом BLOB!

Я ничего не знаю о вашей таблице SQL, но если я попытаюсь сделать свой собственный пример.

Мы получили поля id (int), image (blob) и image_name (varchar (64 )).

Таким образом, код должен выглядеть так (предположим, что идентификатор всегда «1», и давайте использовать этот mysql_query):

$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); //SQL Injection defence!
$image_name = addslashes($_FILES['image']['name']);
$sql = "INSERT INTO `product_images` (`id`, `image`, `image_name`) VALUES ('1', '{$image}', '{$image_name}')";
if (!mysql_query($sql)) { // Error handling
    echo "Something went wrong! :("; 
}

Вы делаете это неправильно во многих отношениях , Не используйте функции mysql - они устарели! Используйте PDO или MySQLi . Вы также должны подумать о сохранении местоположений файлов на диске. Использование MySQL для хранения изображений считается Bad Idea ™. Обработка таблицы SQL с большими данными, например изображениями, может быть проблематичным.

Также ваша форма HTML не соответствует стандартам. Он должен выглядеть так:


Sidenote:

При работе с файлами и их хранении в виде BLOB данные должны быть экранированы с помощью mysql_real_escape_string() , в противном случае это приведет к синтаксической ошибке.

1
задан Ullas Hunka 13 July 2018 в 07:27
поделиться

5 ответов

1
ответ дан Nina Scholz 17 August 2018 в 13:29
поделиться

Предположим, что 1 = выигрыш и 0 - не выигрыш

. Рассмотрим контракты A и B

. Тогда все возможные комбинации:

A | B

0 | 0

0 | 1

1 | 0

1 | 1

Но вы устраняете комбинацию 0-0, так как по крайней мере один должен победить. Поэтому нет возможных комбинаций 3 = 2 ^ 2 - 1

Для трех контрактов A, B, C

A | B | C

0 | 0 | 0

0 | 0 | 1

0 | 1 | 0

0 | 1 | 1

1 | 0 | 0

1 | 0 | 1

1 | 1 | 0

1 | 1 | 1

Опять вам нужно устранить комбинацию 0-0-0. Поэтому нет возможных комбинаций 7 = 2 ^ 3 - 1

Аналогичным образом, в вашем случае использования нет возможных комбинаций = 2 ^ n - 1

0
ответ дан Chathura Widanage 17 August 2018 в 13:29
поделиться
  • 1
    Прохладный ответ, но где javascript? ;-) – RobG 13 July 2018 в 07:29
  • 2
  • 3
    Извините, я думал, вам просто нужно объяснение. Вы хотите, чтобы скрипт также генерировал эти комбинации? Если так, то pls препятствовали мне знать. – Chathura Widanage 13 July 2018 в 07:48
  • 4
    У меня есть основной скрипт, но рекурсивный скрипт будет интересен. Также понимание того, почему 2 является базой – Aza 13 July 2018 в 07:58
  • 5
    Если вас интересует только количество комбинаций, это просто простой прямой расчет. Рекурсии нет. – Chathura Widanage 13 July 2018 в 08:49
0
ответ дан Mark Meyer 17 August 2018 в 13:29
поделиться

вкратце, 2 ** 3 означает 2x2x2, равный 8, а в комбинациях должно быть два opperands, поэтому при запуске opperand не может сочетаться с самим собой, поэтому нам нужно минус число, из-за чего вам пришлось использовать.

(2 ** 3)-1
0
ответ дан Salman Saleem 17 August 2018 в 13:29
поделиться

Генераторы отлично подходят для такого рода вычислений

const None =
  Symbol ()

const combinations = (...xs) =>
{ const loop = function* (comb, [x = None, ...xs])
  { if (x === None)
      return yield comb
    
    yield* loop ([...comb, x], xs)
    yield* loop (comb, xs)
  }
  return Array.from (loop ([], xs))
}

console.log (combinations ('a'))
// [ [a], [] ]

console.log (combinations ('a', 'b'))
// [ [a,b], [a], [b], [] ]

console.log (combinations ('a', 'b', 'c'))
// [ [a,b,c], [a,b], [a,c], [a], [b,c], [b], [c], [] ]
      

0
ответ дан user633183 17 August 2018 в 13:29
поделиться
Другие вопросы по тегам:

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