Существует множество способов предотвращения SQL-инъекций и других SQL-хаков. Вы можете легко найти его в Интернете (Google Search). Конечно, PDO - одно из хороших решений. Но я хотел бы предложить вам некоторые хорошие ссылки с помощью SQL Injection.
Что такое SQL-инъекция и как предотвратить
Руководство PHP для SQL-инъекция
Microsoft объяснение SQL-инъекции и предотвращения в PHP
и некоторые другие, подобные Предотвращение SQL-инъекций с MySQL и PHP
Теперь, почему вам нужно предотвратить запрос из SQL-инъекции?
Я хотел бы сообщить вам: почему мы пытаемся предотвратить SQL-инъекцию с помощью Ниже приведен короткий пример:
Запрос для проверки подлинности входа:
$query="select * from users where email='".$_POST['email']."' and password='".$_POST['password']."' ";
Теперь, если кто-то (хакер) помещает
$_POST['email']= admin@emali.com' OR '1=1
и пароль что-либо ....
Запрос будет анализироваться в системе только до:
$query="select * from users where email='admin@emali.com' OR '1=1';
Другая часть будет отброшена. Итак, что будет? Неавторизованный пользователь (хакер) сможет войти в систему как администратор без своего пароля. Теперь он может делать все, что может сделать администратор / адрес электронной почты. См., Очень опасно, если SQL-инъекция не предотвращается.
Если все матрицы будут тем же размером (т.е. 500x800), то можно просто сделать 3D массив:
nUnknown; % The number of unknown arrays
myArray = zeros(500,800,nUnknown);
Для доступа к одному массиву Вы использовали бы следующий синтаксис:
subMatrix = myArray(:,:,3); % Gets the third matrix
можно добавить больше матриц к myArray несколькими способами:
myArray = cat(3,myArray,zeros(500,800));
% OR
myArray(:,:,nUnknown+1) = zeros(500,800);
, Если бы каждая матрица не будет тем же размером, необходимо было бы использовать массивы ячеек как предложенный Hosam.
РЕДАКТИРОВАНИЕ: Я пропустил часть об исчерпывании памяти. Я предполагаю, что Ваш nUnknown является довольно большим. Вам, вероятно, придется переключить тип данных матриц (единственный или даже тип uintXX при использовании целых чисел). Можно сделать это в вызове к нулям:
myArray = zeros(500,800,nUnknown,'single');
Используйте массивы ячеек. Это имеет преимущество перед 3D массивами, в которых это не требует непрерывное пространство памяти хранить все матрицы. На самом деле каждая матрица может быть сохранена в различном пространстве в памяти, которая сохранит Вас от ошибок Из памяти, если Ваша свободная память будет фрагментирована. Вот демонстрационная функция для создания матриц в массиве ячеек:
function result = createArrays(nArrays, arraySize)
result = cell(1, nArrays);
for i = 1 : nArrays
result{i} = zeros(arraySize);
end
end
Для использования его:
myArray = createArrays(requiredNumberOfArrays, [500 800]);
И получить доступ к Вашим элементам:
myArray{1}(2,3) = 10;
, Если Вы не можете знать количество матриц заранее, Вы могли бы просто использовать динамическую индексацию MATLAB для создания массива столь большим, как Вам нужно. Производительность наверху будет пропорциональна размеру ячейка массив и не затронута размером самих матриц. Например:
myArray{1} = zeros(500, 800);
if twoRequired, myArray{2} = zeros(500, 800); end
myArrayOfMatrices = zeros(unknown,500,800);
, Если Вы заканчиваетесь бросок памяти больше RAM в Вашей системе и удостоверяетесь, что выполняете ОС на 64 бита. Также попытайтесь уменьшить свою точность (сделайте Вас, действительно нуждаются, удваивается, или можно ли обойтись одиночными играми?):
myArrayOfMatrices = zeros(unknown,500,800,'single');
Для добавления к той попытке массива:
myArrayOfMatrices(unknown+1,:,:) = zeros(500,800);
Я делал некоторую объемную визуализацию в октаве (matlab клон) и создавал мои 3D массивы (т.е. массив 2-х частей) использование
buffer=zeros(1,512*512*512,"uint16");
vol=reshape(buffer,512,512,512);
, Потребление памяти, казалось, было эффективно. (не может сказать то же для последующей скорости вычислений:^)
если Вы знаете, какой неизвестный,
можно сделать что-то как
myArray = zeros(2,2);
for i: 1:unknown
myArray(:,i) = zeros(x,y);
end
Однако, это было некоторое время, так как я в последний раз использовал matlab., таким образом, эта страница могла бы пролить некоторый свет на вопрос: