小编Pro*_*irl的帖子

如何存储Birthdate和Age,以便每天可以在PHP/MySQL中更新Age?

我应该如何在MySQL中存储Birthdate,以便我可以通过Cron作业轻松地每天更新每个人的年龄?

存储Age和Birthdate是否有意义,以便在涉及Age的搜索时,我不必动态计算每个Age并浪费CPU资源?

如果是这样,我应该如何1)存储出生日期,2)每天计算年龄?

我可以想象每日cron脚本首先过滤掉其出生日期不是当月的用户,然后过滤掉其出生日不是当天的用户,然后将剩下的每个用户的年龄加1.

这有意义吗?如果是这样,我该怎么做?有没有更好的方法来做所有这些?

php mysql date date-of-birth

6
推荐指数
1
解决办法
3069
查看次数

如何选择两列,其中一列必须是DISTINCT?

Table1有3列:col1,col2,col3

我怎样才能将where的SELECT所有DISTINCT值等于某个值,然后对其进行排序,但是有不同的结果显示它们的相应值?col1col3col2 DESCcol1col2

我尝试了以下但它不起作用:

SELECT DISTINCT (col1), col2
FROM  `Table1` 
WHERE  `col3` =  'X'
ORDER BY  `col2` DESC 
Run Code Online (Sandbox Code Playgroud)

以上不会导致不同的值col1.如果我删除" , col2",那么它将显示不同的值col1,但它不会显示它们的相应col2值.

那我该怎么做?

mysql sql

6
推荐指数
1
解决办法
6099
查看次数

您应该在具有CloudFlare的PHP站点上使用哪些缓存标头,以便"始终在线"工作?

您应该在具有CloudFlare的PHP站点上使用哪些缓存标头,以便" 始终在线 "工作并且您的图像由其CDN缓存?

CloudFlare的文档非常糟糕,他们的支持团队似乎也不知道.

php caching browser-cache cloudflare

5
推荐指数
1
解决办法
3751
查看次数

使用永久登录Cookie时,如何对照DB中的bcrypt哈希令牌检查Cookie令牌?

这种流行的持久登录Cookie 解决方案中该解决方案涉及生成随机的128位“令牌”以保存在用户的Cookie中,Jens Roland建议:

并且不要将永久性登录COOKIE(令牌)存储在您的数据库中,仅是一种哈希!登录令牌是等效的密码,因此,如果攻击者将您的手放在您的数据库上,则他/她可以使用这些令牌登录到任何帐户,就像它们是明文登录密码组合一样。因此,在存储持久性登录令牌时,请使用强盐散列(bcrypt / phpass)。

但是,当您对Cookie令牌进行加密时,您将如何对照数据库中的加密令牌来检查Cookie令牌以确认Cookie登录有效?(因为加密始终使用随机盐)?

换句话说,您将无法对Cookie令牌进行bcrypt加密,然后在数据库中寻找匹配项,因为您将永远找不到匹配的令牌,因此,如何按照推荐的解决方案将其与数据库中的哈希版本进行实际匹配(“服务器保留一个由数字->用户名关联组成的表,该表将被查找以验证cookie的有效性。

编辑:

请记住,按照上面链接的推荐解决方案,单个用户可以为不同设备使用多个 Cookie /令牌。我提到这是因为提交了一个答案(此答案已被删除),它假定每个用户只有一个令牌。

php mysql cookies login bcrypt

5
推荐指数
1
解决办法
1048
查看次数

如何在PHP 5.3中将表情符号转换为它们各自的HTML代码实体?

我需要在PHP 5.3网站上将字符串中的表情符号(例如)转换为它们各自的HTML代码实体(例如😀)。

我需要这样做,以便将用户输入正确存储在旧脚本MySQL数据库中,以便以后在显示给用户时正确显示。尝试直接从用户输入中保存表情符号时,它们被错误地保存为?数据库中的表情符号。该旧脚本utf8mb4在MySQL 中不支持(此解决方案失败),并且所有尝试转换其数据库,表和列的尝试utf8mb4没有 解决了这个问题,所以我剩下唯一可以确认的解决方案是将用户输入的Emojis转换为字符串形式的HTML代码实体,以将这些实体按原样正确存储在数据库中,以便在检索时将它们正确显示为Emojis。因为现代浏览器会自动将这些表情符号实体转换为表情符号字符。

我也尝试过此解决方案,但仅在5.4及更高版本中它不适用于PHP 5.3。(我无法在此特定站点上升级到5.4,因为它所依赖的旧脚本仅在5.3中可用,并且在任何情况下都不能更改或升级。)

我也尝试过此解决方案该解决方案可在PHP 5.3中使用,但是您不能将其仅作为特定的Emoji字符串提供给它,因此即使在PHP 5.3中也无法解决我的问题。

只需要将Emojis转换为字符串即可,别无其他。(但是,如果不可能,那么我想我可以将其他HTML实体与之一起使用,例如&to &,但是我不希望这样)。

那么,如何在PHP 5.3中将字符串中的表情符号转换为它们各自的HTML代码实体,从而将类似的字符串this & that 转换为this & that 😎

php html-encode html-entities emoji php-5.3

5
推荐指数
1
解决办法
2602
查看次数

如何在 PHP 中的关联数组中的特定关联键之后添加新的 [key] => [value] 对?

可能的重复:
关联数组的array_splice()
如何将数组值添加到关联数组的中间?

如何[key] => [value]在 PHP 中的关联数组中的特定关联键之后添加新对?

例如,假设我们有一个名为 的数组$fruits

array {
   [apple] => 1
   [banana] => 3
   [orange] => 4
}
Run Code Online (Sandbox Code Playgroud)

如何添加[plum] => 2$fruits使其出现在[apple]key之后但key 之前[banana]

谢谢。

php arrays associative-array

4
推荐指数
1
解决办法
2683
查看次数

哪个更快: COUNT(DISTINCT Column) 与 COUNT(*) ... GROUP BY Column

我正在使用 MySQL 并且我已经阅读了几次,这COUNT(*)通常比COUNT(Column).

但是,我需要得到COUNT不同行。据我了解,我可以通过两种不同的方式做到这一点:

a) SELECT COUNT(DISTINCT Column) ...

或者

b) SELECT COUNT(*) ... GROUP BY Column

一般来说,哪个更快?如果要看,那还有什么是依赖

mysql count distinct

4
推荐指数
1
解决办法
3311
查看次数

哪个复合索引会使这个简单的MySQL查询更快?

哪个复合索引可以使这个简单的MySQL查询更快,我将如何创建该复合索引?

SELECT * 
FROM  `Table1` 
WHERE  `col1` =  '145307'
AND  `col2` =  '0'
AND col3 NOT 
IN ( 130209, 130839 ) 
ORDER BY col4 DESC 
LIMIT 0 , 5
Run Code Online (Sandbox Code Playgroud)

上面(col1to col4)的每列上都有一个单独的索引.


编辑:

结果SHOW CREATE TABLE:

CREATE TABLE `Table1` (  
 `primaryCol` int(11) NOT NULL AUTO_INCREMENT,
 `col3` int(11) DEFAULT '0',
 `col5` varchar(20) COLLATE utf8_bin DEFAULT NULL,
 `col1` int(11) DEFAULT '0',
 `col6` varchar(80) COLLATE utf8_bin DEFAULT NULL,
 `col7` text CHARACTER SET …
Run Code Online (Sandbox Code Playgroud)

mysql indexing query-optimization composite-index

3
推荐指数
1
解决办法
3520
查看次数

对于不存在的数组键,isset()返回true的奇怪行为

我有以下数组$fruits:

Array
(
    [response] => Array
        (
            [errormessage] => banana
        )  

    [blah] => Array
        (
            [blah1] => blahblah1
            [blah2] => blahblah2
            [blah3] => blahblah3
            [blah4] => blahblah4
        )  

)
Run Code Online (Sandbox Code Playgroud)

然而当我这样做时:

isset($fruits['response']['errormessage']['orange'])
Run Code Online (Sandbox Code Playgroud)

它返回true!

究竟是什么导致这种奇怪的行为,我该如何解决这个问题呢?

谢谢!

php arrays isset

2
推荐指数
2
解决办法
838
查看次数

如果在MySQL中将birthdate存储为"Date"类型,那么您如何确定它今天是用户在PHP中的生日?

如果在MySQL中将birthdate存储为"Date"类型,那么您如何在PHP中确定它是否是特定用户今天的生日?

这只是抓住生日列值,在爆炸上进行-,然后检查日期和月份是否与PHP当前日期和月份相匹配?或者是否有更简单,更粗糙的方式呢?

此外,您对今天生日的SELECT 所有用户使用什么查询?

php mysql sql date

2
推荐指数
1
解决办法
9109
查看次数