是否可以修改现有的MySQL查询?

时间:2017-02-28 21:32:07

标签: php mysql

我在脚本中提前设置了一个限制。

示例:

$row = mysqli_query($db,"SELECT id FROM table ORDER BY id DESC LIMIT 5");

" 5"永远都是正确的 - 但是有一个插件,我需要更改限制来自" 5"到" 2" (一次性特殊情况)。

在调用获取结果的函数之前,我可以将$ row更改为新查询 - 但我宁愿更改现有查询。

类似的东西:

$row .= "LIMIT 2"

或者:

$row += "LIMIT 2"

或者:

$row < "LIMIT 2"

当然,这些都不起作用 - 因为查询设置可能无法实现 - 但要问它会有什么不妥。

全部谢谢

快速说明 - 这是两个单独的文件。文件A根据环境设置正确的查询并容纳使用查询的函数。文件B调用输出查询的函数(因此我可以在文件B中的函数调用之前更改查询)。是的,这就是设置这种方式的原因。

2 个答案:

答案 0 :(得分:2)

你在正确的轨道上但是你必须在将它提供给函数之前更改查询字符串。所以为它做一个变量

$query = "SELECT id FROM table ORDER BY id DESC ";

然后,无论你希望如何,做一些可以增加这个限制的东西。在我的示例中, if 语句

if ($this == "this") {
  $query .= "LIMIT 5";
} else {
  $query .= "LIMIT 2";
}

然后将其提供给mysqli

$row = mysqli_query($db, $query);

修改

我读了你的笔记和你的评论。由于您是从两个不同的文件调用该函数,因此可以添加默认参数,如:

function yourFunction($limit = 5) {
  $query = "SELECT id FROM table ORDER BY id DESC LIMIT " . $this;
  $row = mysqli_query($db, $query);
}

默认情况下,只需在没有任何参数的情况下调用yourFunction(),就会出现默认情况,例如5。

在您希望限制为2的特殊情况下,只需使用该参数调用该函数作为参数。

yourFunction(); // This will do the limit of 5

yourFunction(2); // This will do 2

这也是免费的,所以你可以使用你想要的任何限制

答案 1 :(得分:2)

您可以在文件A中将限制定义为变量:

// Define variable
$limit_number = 5;

然后使用include函数在文件B中包含文件A(我假设您已经这样做了。) 然后在文件B中包含文件A后,从文件B中更改变量的值,因为它现在在文件B中可用。

include('path/to/fileA');
$limit_number = 2;
// call the query executing function you speak of from File A.

为此,您必须将硬编码的5替换为查询中的变量限制。

$row = mysqli_query($db,"SELECT id FROM table ORDER BY id DESC LIMIT ".$limit_number);