来自我的sql数据库的匹配条件

时间:2017-09-28 15:22:42

标签: php sql database

因此,我有一张公司表,其中包含客户必须满足的最低标准。

例如:

  • 公司1的最低电费为35英镑。
  • 公司2的最低电费为35英镑。
  • 公司3的最低电费为45英镑。

A customer will fill out the form, and say there electric spend is £53 is would pull all 3 companies from the database.

If a customer entered £40 it would pull companies 1 & 2 from the database.

我有一个我认为可行的SQL查询,但原因并不明显:

SELECT * FROM `companies` WHERE `electric_spend` <= 35

但该查询仅适用于公司1&amp; 2。

任何帮助都会受到赞赏,甚至是带有方法的网站链接,正确的操作员或任何我将在月球上的任何内容。

3 个答案:

答案 0 :(得分:1)

我相信你会想在SQL中使用where x <= y AND z > a语法,我相信你也可以使用SQL的IN命令。是一些帮助的资源。

https://www.w3schools.com/sql/default.asp

https://www.w3schools.com/sql/sql_and_or.asp

https://www.w3schools.com/sql/sql_in.asp

旁注:尽可能在SQL语句中执行逻辑而不是Web服务器语言(PHP / .NET / etc)。 SQL在数据操作方面的性能要高得多。

答案 1 :(得分:0)

如果我正确阅读,那么答案是你所测试的价值是不正确的。

您需要使用客户的实际支出而不是35的固定值。

因此,您的第一个客户将生成查询

SELECT * FROM companies WHERE electric_spend&lt; = 53

第二个客户将生成查询

SELECT * FROM companies WHERE electric_spend&lt; = 40

因此您需要根据数据构建查询。为了保证安全,请使用PDO之类的东西来帮助构建查询。

答案 2 :(得分:0)

最基本的答案是使用带变量的查询:

<?php

$customerSpend = 53;

$query = "SELECT * FROM `companies` WHERE `electric_spend` <= '$customerSpend'";

然而,这本身并不是最佳实践,更好的答案是使用像PDO这样的东西来帮助隔离SQL注入攻击。

<?php

$customerSpend = 53;

$query = 'SELECT * FROM `companies` WHERE `electric_spend` <= :customerSpend';

$sth = $dbh->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));

$sth->execute(array(':customerSpend' => $customerSpend));