Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL-在WHERE条件下使用数学运算_Php_Sql - Fatal编程技术网

Php SQL-在WHERE条件下使用数学运算

Php SQL-在WHERE条件下使用数学运算,php,sql,Php,Sql,我目前有以下PHP/SQL代码: $today = date("Y-m-d"); $sqlQuery = 'SELECT id FROM post WHERE (100*((agree+disagree)-('.nbDays('date', $today).')*10) >= 75)'; 还有我的工作 function nbDays($debut, $fin) { $nbSecondes= 60*60*24; $debut_ts = strt

我目前有以下PHP/SQL代码:

$today = date("Y-m-d");

$sqlQuery = 'SELECT id FROM post 
            WHERE (100*((agree+disagree)-('.nbDays('date', $today).')*10) >= 75)';
还有我的工作

function nbDays($debut, $fin) {
    $nbSecondes= 60*60*24;

    $debut_ts = strtotime($debut);
    $fin_ts = strtotime($fin);
    $diff = $fin_ts - $debut_ts;
    return round($diff / $nbSecondes);
}
下面是我的post表的外观:

Post
-- #id
-- [int] agree
-- [int] disagree
-- [datetime] date
我想做的是为符合此条件的帖子返回一个ID数组

(100*(同意/(同意+不同意))-(从发布日期到今天的天数)>75

我想使用SQL请求,这样我就不必在排序之前列出所有帖子

我希望我足够清楚,希望你能帮助我


非常感谢

在您的情况下,您可以编写一个数据库存储过程来处理 你的逻辑。然后直接在php中调用数据库过程。简言之 如果您使用MYSQL,也许可以尝试以下简单查询

SELECT id FROM post WHERE (100*((agree+disagree)-(UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(date))*10) >= 75);

你真的想在查询中调用一个PHP函数吗?你应该考虑使用<代码> DATEDIFO<代码>,或者在你从数据库中检索到之前,从数据库(日期)中调用你所选择的DbMsAs()的NBaysay.()的等价物。SQL不是那样工作的谢谢,我想这正是我需要的。