Во-первых, вы должны проверить, является ли ваш столбец изображения типом 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 = выигрыш и 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
вкратце, 2 ** 3 означает 2x2x2, равный 8, а в комбинациях должно быть два opperands, поэтому при запуске opperand не может сочетаться с самим собой, поэтому нам нужно минус число, из-за чего вам пришлось использовать.
(2 ** 3)-1
Генераторы отлично подходят для такого рода вычислений
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], [] ]