FIRST Прочтите комментарии к этому вопросу - вы не хотите стрелять себе в ногу из-за проблем с безопасностью инъекций mysql. Вы были предупреждены. Теперь, чтобы решить вашу текущую проблему, не обращаясь к риску безопасности всего подхода, когда речь идет о построении SQL-запросов, читайте дальше ...
В принципе, Amro уже опубликовал два решения для вас, которые работают, но, поскольку вы не приняли его, я объясню подробнее.
Ваша проблема в том, что вы не указываете MATLAB, какие части вашего запроса он должен интерпретировать как буквенную строку, а какие части он должен интерпретировать как имя переменной. Чтобы решить эту проблему, вы можете просто завершить литеральную строку, где это уместно, то есть после открывающих скобок, а затем запустить их снова перед закрывающими скобками.
Между этими литеральными строками вы хотите добавить содержимое ваших переменных, поэтому вам нужно указать MATLAB, чтобы конкаталировали ваши литеральные строки с вашими переменными, поскольку команда mysql, вероятно, ожидает весь запрос как одна строка Поэтому, по сути, вы хотите взять строку 'insert to table (' и строку, сохраненную в переменной name
и строку ') values (' и т. Д. И склеить их в одну большую строку. Amro и Исаак показали вам два решения, как это сделать без особых объяснений:
horzcat('insert into table (', name, ') values (', var_name, ')')
использует функцию horzcat , а
['insert into table (' name ') values (' var_name ')']
использует тот факт, что MATLAB обрабатывает строки как массивы символов, так что вы можете просто использовать квадратные скобки для формирования большого массива, содержащего строки одну за другой.
Третье решение, предлагаемое Amro, немного сложнее:
sprintf('insert into table (%s) values (%s)',name,var_name)
Он сообщает функции sprintf
(которая сделана для этой цели) "взять строку, которую я предоставляю в качестве первого параметра, и заменить вхождения %s
на строки, которые я предоставляю, в качестве следующих параметров Этот последний метод особенно полезен, если вам также необходимо вставить числа в строку, поскольку sprintf
также может преобразовывать числа в строку и позволяет точно контролировать их форматирование. Вам следует внимательно изучить Страница справки для sprintf , чтобы узнать больше: -).