2

我需要做一个 mysql 查询,但我不知道该怎么做。

$x我想通过将 2 个表字段加在一起(在划分它们之后)来选择大于 php 值的行。

伪代码:

 SELECT * FROM table WHERE (field_a/50 + field_b/20)  > $x

$x是一个php值,它只是我需要的总和。

有人有提示吗?

4

2 回答 2

3

这几乎是您编写的伪代码:

$x = 100; // example
$x = mysql_real_escape_string($x); // "securing" the value.

$sql = "SELECT * FROM table WHERE (field_a/50 + field_b/20)  > '$x'";

$result = mysql_query($sql);

使用参数更优雅,但你明白了。这样,如果 SQL 查询$x为空或有任何非预期值,您就可以弄乱 SQL 查询。mysql_real_escape_string我处理了这个问题,在查询中使用它之前转义了值。

编辑

使用 MySQLi 的相同示例:

$stmt = $mysqli->prepare("SELECT * FROM table WHERE (field_a/50 + field_b/20) > ?");

// "i' is a format string, each "i" means integer
$stmt->bind_param("i", $x); // use "d" instead of "i" for double

$stmt->execute();
$stmt->bind_result($col1, $col2);
于 2012-07-30T16:20:15.710 回答
0

这几乎就是你要做的事情。除了在构建查询字符串之前确保 $x 是正确的数字之外,您已经掌握了它。

一个小建议 - 如果您经常执行此类查询,您可能需要考虑将这些field_a/field_b内容的值缓存在单独的字段中。这是一种轻微的非规范化,但它允许对该字段进行索引并可能提高性能。现在,您正在对派生/计算值执行 where,这使得无法使用索引。

于 2012-07-30T16:18:57.580 回答