因此,我有一张公司表,其中包含客户必须满足的最低标准。
例如:
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。
任何帮助都会受到赞赏,甚至是带有方法的网站链接,正确的操作员或任何我将在月球上的任何内容。
答案 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));