0

Am пытается написать подготовленное заявление, как показано ниже:Активный SELECT_ALL запись запрос, подготовленный оператор

@fofs = FileOrFolder.connection.select_all("select * from newtestdocB.file_or_folders where name like","%#{params[:search]}%") 

Это оказывается неправильным запрос на тузд консоли. Не принимает переменную% # {PARAMS [: поиск]}% значение для запроса

Пожалуйста, исправьте мой запрос ...

консольных сообщений:

Parameters: {"search"=>"do", "cluster_id"=>"2", "datasetid"=>"1", "id"=>"1"} 
    %do% (0.2ms) select * from newtestdocB.file_or_folders where name like 

ActiveRecord::StatementInvalid (Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1: select * from newtestdocB.file_or_folders where name like): 

ответ

0

Try a placeholder ?

"select * from newtestdocB.file_or_folders, где name нравится?", "% # {Params [: search]}%"

См. Вопросительный знак в приведенном выше заявлении, которое будет заполнено параметрами, которые следуют за запятой.

ЕСЛИ выше заявление не работает, это должно работать, используя «+» для конкатенации, остерегайтесь пространства рядом с «как»

sql = "select * from newtestdocB.file_or_folders where name like <<space>>" + "%#{params[:search]}%" 

FileOrFolder.connection.select_all(sql) 
+0

ее не работает ..... его принимать как полная строка и для аналогичного параметра это не в котировках .... output sql: выберите * from newtestdocB.file_or_folders, где имя типа% d% ................ ..... % d% не в кавычках ... – user2569524

+0

«выберите * from newtestdocB.file_or_folders, где имя типа << >>« + »% # {params [: search]}%" ... также не работает ! – user2569524

+0

«выберите * from newtestdocB.file_or_folders, где имя типа« + »% # {params [: search]}%" ..here..dont дать <>, я имел в виду оставить буквальное пространство ... – beck03076