0

想写一份声明中象下面这样:活动记录查询SELECT_ALL,备言

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

它原来是mysql的控制台上的错误查询。不占用变量%#{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 where name like?”,“%#{params [:search]}%”

查看问号在上面的声明中,将用逗号后面的参数填充。

如果上面的语句不工作,这必须努力,用“+”来连接,提防未来的空间“喜欢”

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

FileOrFolder.connection.select_all(sql) 
+0

它不工作.....它以它作为一个完整的字符串和类似的参数它不在引号中...... 输出sql:select * from newtestdocB.file_or_folders其中名称如%d%............... ..... %d%未加引号... – user2569524

+0

“select * from newtestdocB.file_or_folders其中名称如<< >>”+“%#{params [:search]}%”...也不起作用! – user2569524

+0

“select * from newtestdocB.file_or_folders其中名称如”+“%#{params [:search]}%”..其中不存在<>,我的意思是留一个字面空间...... – beck03076