当前位置: 首页 > 面试题库 >

如何在MySQL LIKE查询中使用PHP字符串?

臧兴学
2023-03-14
问题内容

我试图找到匹配特定模式的行数。在此示例中,所有以“ 123”开头的内容:

这正在工作:

$query = mysql_query("SELECT * FROM table WHERE the_number LIKE '123%'");
$count = mysql_num_rows($query);

问题是LIKE会有所不同,所以我试图在脚本中定义它,然后执行查询,但这不起作用:

$prefix = "123";
$query = mysql_query("SELECT * FROM table WHERE the_number LIKE $prefix.'%'");
$count = mysql_num_rows($query);

在第二个示例中,如何使该查询正常工作?

编辑:我也尝试了没有期限(也无法正常工作):

$query = mysql_query("SELECT * FROM table WHERE the_number LIKE $prefix'%'");

问题答案:

您的语法错误;无需在双引号字符串内放置句点。相反,它应该更像

$query = mysql_query("SELECT * FROM table WHERE the_number LIKE '$prefix%'");

您可以通过打印出字符串以确认与第一种情况相同来确认这一点。

当然,像这样简单地将变量注入查询字符串中 并不是一个好主意
,因为存在SQL注入的危险。至少您应该使用手动转义变量的内容mysql_real_escape_string,这将使其看起来像这样:

$sql = sprintf("SELECT * FROM table WHERE the_number LIKE '%s%%'",
               mysql_real_escape_string($prefix));
$query = mysql_query($sql);

请注意,sprintf百分号的第一个参数内部需要加倍以最终在结果中出现一次。



 类似资料:
  • 问题内容: 我尝试在提交之前对该字符串进行。 问题答案: 你需要将参数传递为映射或2元组序列,例如: Python 3或以上 采用: 请注意,这在通常意义上不会进行url编码(请看输出)。为此使用。

  • 问题内容: 我怀疑这是否是加密,但是找不到更好的短语。 我需要像这样传递一个长查询字符串: 查询字符串不包含任何敏感信息,因此在这种情况下我并不真正担心安全性。只是…好,太长且太丑陋。是否有一个库函数可以让我将查询字符串编码/加密/压缩为类似于md5()的结果(类似于,总是32个字符串),但是可以解码/解密/解压缩? 问题答案: 基本前提是非常困难的。在URL中传输任何值意味着您只能使用ASCII

  • 问题内容: 我试图用Java创建一个简单的HttpServer来处理GET请求,但是当我尝试获取请求的GET参数时,我注意到HttpExchange类没有用于该方法的方法。 有人知道读取GET参数(查询字符串)的简单方法吗? 这是我的处理程序的样子: ..和主要方法: 问题答案: 下列: 将返回类似于以下格式的字符串: 因此您可以自己简单地解析字符串,这就是解析函数的样子: 这就是您可以使用它的方

  • 样本子句 sample_clause允许您指示数据库从表中的随机数据样本中进行选择,而不是从整个表中进行选择。 我想使用QueryDSL运行下面的查询 样本子句 sample_clause允许您指示数据库从表中的随机数据样本中进行选择,而不是从整个表中进行选择。 从测试t样本(80)中选择,其中t.test_id=01,t.test _ suite _ id = 02 其中条件是动态的,我使用qu

  • 问题内容: 是否存在通过查询字符串传递数组的标准方法? 需要明确的是,我有一个带有多个值的查询字符串,其中一个是数组值。我希望将该查询字符串值视为一个数组-我不希望该数组爆炸,以使其与其他查询字符串变量没有区别。 编辑: 根据@Alex的答案,没有标准的方法可以执行此操作,因此我的后续工作是什么才是 识别 我正在读取的参数同时是 PHP 和 Javascript 数组的简单方法? 用相同的名称命名

  • 我想在SQLite查询的每个ORDER BY子句之前插入一个COLLATE NOCASE。这就是我到目前为止所拥有的: 输出为: 从'test'顺序中选择'x','y',按'x'整理NOCASE ASC,'z'ASC限制0,10 第一个实例被匹配和替换。第二个实例不被替换(因为模式中的ORDER BY子句)。