Основываясь на вашем примере кода и комментариях, я собираюсь предложить более нормализованный подход. Похоже, что ваш стол картинки выглядит как:
Pictures {
ID Int,
P1 varchar(??),
P2 varchar(??),
...
}
... Где, я полагаю, P1..Pn равно п столбцов, которые будут содержать пути к некоторым файлам изображений. Как отмечалось в предыдущих комментариях, это не нормируется и плохо развивается. Это может сделать работу, но она не является масштабируемой или эффективной. Посмотрите на this article about normalization в качестве стартера. Если вы переходите на следующее:
Pictures {
UserID Int,
PictureID Int,
PicturePath varchar(??)
}
... тогда у вас будет одна строка на изображение для каждого пользователя. (Комбинация UserID и PictureID будет уникальной, поэтому каждый пользователь может иметь PictureID 1, 2 и т. Д.). Тогда вам не нужно беспокоиться о том, чтобы найти «следующий столбец нуля». Вы просто добавляете новую строку для каждого нового изображения.
Следующий пункт ... Предполагая, что вы по какой-то причине сохранили текущую структуру таблицы. (не рекомендуется). Ваша логика показывает, что вы создаете (потенциально) много ненужных вызовов в базу данных. Каждый запрос, который вы запускаете, представляет собой обратную связь с базой данных. Каждый рейс туда и обратно берет ресурсы и время. Когда это возможно, вы должны попытаться уменьшить количество раундов, которые необходимо выполнить вашему приложению. Вы получите лучшую производительность и лучшую масштабируемость.
Последний вопрос ... Один из комментариев, упомянутых в SQL Injection. Код, который вы предоставили, уязвим для атак SQL Injection. Это довольно простой вопрос. Но вам нужно посмотреть и понять, что это такое и почему ваш код уязвим.
Удачи вам!
«первый пустой столбец в записи, а затем сохранить данные в нем» --- это знак того, что вы не правильно разработали свою модель БД. – zerkms
@zerkms Я новичок в SQL, любые лучшие предложения приветствуются! – Blake
Просто напишите, чего вы пытаетесь достичь - это хорошее начало. Затем посмотрите, как его решить. –