如何使用nodejs在mysql中使用类似查询

时间:2019-05-31 12:16:32

标签: mysql node.js

我一直在尝试在MySQL上使用类似查询,但它与数据库的模式不匹配,并且仅在给出了确切的关键字(%符号不起作用)时才有效

我尝试了Concat方法,将反斜杠用于特殊字符,+符号以及我可以找到的所有其他方法,但是仍然无法使用

connection.query('SELECT * FROM job where domainname like ?', '%' + request.body.domain + '%' ,function(error, results){
            response.render('./results',{rows:results});    

    });
and on front end part
  <tbody>
    <% for(var i=0; i < rows.length; i++) { %>
   <tr>
     <td><%= i %></td>
     <td><%= rows[i].companyname %></td>
     <td><%= rows[i].domainname %></td>
   </tr>
<% } %>

错误:无法读取未定义的属性“ length” 如果我不使用%并且不尝试模式匹配,然后显示结果,它将起作用。

2 个答案:

答案 0 :(得分:0)

Pushkar,欢迎使用StackOverflow。我也许可以对您的查询有所帮助。以我的经验,MySQL中的“ LIKE”运算符的工作方式如下:

    开头的
  • %表示忽略比赛前的字符。 'qweradsf zxcv
  • 后面的
  • %表示匹配后忽略字符。 ' qwer asdfzxcv'
  • %%表示匹配项可以在字符串中间。 'qwer asdf zxcv'

长度错误是由于“行”没有值所致。一个好的防御性编程习惯是永远不要相信填充了第3部分的数据。就像我们从不信任用户输入一样,从不信任第三方数据。在这种情况下,请对SQL select进行检查。如果“行”没有值,请不要尝试渲染tbody。

返回到SQL查询;尝试将所有值硬编码为字符串文字。查看所查询的公式是否返回任何值。然后将其拉成参数化版本。

答案 1 :(得分:0)

尝试将值保留在数组中

public class User
{
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    [Range(18,99)]
    public string Age { get; set; }
    [MaxLength(250)]
    public string Address { get; set; }
}

打印错误和结果(如果不起作用)

有关更多信息,请转到-https://www.npmjs.com/package/mysql#performing-queries