【问题标题】:How to modify SQL string in PHP?如何在 PHP 中修改 SQL 字符串?
【发布时间】:2021-05-14 17:59:13
【问题描述】:

我的代码是这样的:

elseif ($criteria == 'doctoratedegree')
    $query->where('postgradcourses', 'LIKE', '%' . $searchItem . '%');

所以基本上在前端,一个人会在表单下拉菜单中选择“博士学位”,然后输入他们要搜索的课程,代码会在课程数据库的 postgradcourses 列中查找课程桌子。问题是,菜单中的 Masters degree 选项的编码方式与在 postgradcourses 列中的代码相同。

如何修改查询代码,使其搜索:PhD in . $搜索项。 ?

基本上,代码将添加一个特定的字符串以及人们搜索的任何内容。

【问题讨论】:

  • 不要修改 SQL 代码。您在准备好的查询中传递一个参数。否则你很容易受到 SQL 注入攻击
  • @Charlieface ok 那么我将如何修改上面的代码来创建一个带参数的准备好的查询?
  • @Charlieface 这是参数化的。 laravel中where的第三个参数是一个值。
  • 可能是elseif(in_array($criteria, array('doctoratedegree', 'phd'))) {?不太清楚你有什么和你想要什么..你能添加更多细节
  • @user3783243 不确定您需要什么详细信息。现在,查询进入表的列并搜索用户输入的搜索项。我想在搜索项上添加特定文本,但不知道如何更改代码。

标签: php sql laravel laravel-5


【解决方案1】:

首先,您应该区分硕士和博士申请。 传递另一个参数,您可以在此基础上切换并修改您的查询。这是正确的做法。 如果以某种方式不可能,那么您应该在查询中添加一个 OR 条件并使用连接字符串搜索 postgradcourses ,这将为您提供一组解析结果的帖子结果并将 PHD 结果存储在一个数组中,将 Masters 存储在另一个数组中,并根据您的需要使用它。

$like_statement .= " postgradcourses LIKE "."'%".$keyword."%'"." OR postgradcourses LIKE "."'%".$keyword."%'";

【讨论】:

  • 我的开发人员编写了代码,但他去了 MIA,而我的新开发人员正在处理其他一些事情。很难弄清楚如何修改代码。如何传递另一个参数并修改查询?
  • 这对 SQL 注入开放。
  • @user3783243 问题:如何知道代码是否对 SQL 注入开放?
  • @Thomas 标识符和值是混合的。 PHP 中的值不应位于 SQL 字符串中,驱动程序应绑定并转义它们
  • @user3783243 值像研究生课程?你所说的价值观是什么意思?司机是什么意思?你如何绑定这些值并转义它们?
猜你喜欢
  • 1970-01-01
  • 2020-03-21
  • 1970-01-01
  • 2023-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-27
  • 2020-01-20
相关资源
最近更新 更多