所以,我有一个公司表,客户必须满足的最低标准。
例如:
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& 2。
任何帮助都将不胜感激,甚至链接到一个网站的方法,正确的操作员或任何我将在月球上。
发布于 2017-09-28 15:27:50
我相信您会希望在SQL中使用where x <= y AND z > a语法,我相信您也可以使用SQL的IN命令。HEre是一些帮助解决问题的资源。
https://www.w3schools.com/sql/default.asp
附带注意:尽可能使用SQL语句而不是web服务器语言(PHP/.NET/等等)进行逻辑处理。SQL在数据操作方面的性能要好得多。
发布于 2017-09-28 15:28:59
如果我读对了,那么答案是,您正在测试的值是不正确的。
您需要使用客户的实际花费,而不是35的固定值。
因此,您的第一个客户将生成查询。
从companies中选择* electric_spend <= 53
第二个客户将生成查询。
从companies中选择* electric_spend <= 40
因此,您需要从数据构建查询。为了确保安全,请使用类似PDO之类的工具来帮助构建查询。
发布于 2017-09-28 15:33:42
最基本的答案是使用接受变量的查询:
<?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));https://stackoverflow.com/questions/46472861
复制相似问题