我应该如何在MySQL中存储Birthdate,以便我可以通过Cron作业轻松地每天更新每个人的年龄?
存储Age和Birthdate是否有意义,以便在涉及Age的搜索时,我不必动态计算每个Age并浪费CPU资源?
如果是这样,我应该如何1)存储出生日期,2)每天计算年龄?
我可以想象每日cron脚本首先过滤掉其出生日期不是当月的用户,然后过滤掉其出生日不是当天的用户,然后将剩下的每个用户的年龄加1.
这有意义吗?如果是这样,我该怎么做?有没有更好的方法来做所有这些?
Table1
有3列:col1
,col2
,col3
我怎样才能将where的SELECT
所有DISTINCT
值等于某个值,然后对其进行排序,但是有不同的结果显示它们的相应值?col1
col3
col2 DESC
col1
col2
我尝试了以下但它不起作用:
SELECT DISTINCT (col1), col2
FROM `Table1`
WHERE `col3` = 'X'
ORDER BY `col2` DESC
Run Code Online (Sandbox Code Playgroud)
以上不会导致不同的值col1
.如果我删除" , col2
",那么它将显示不同的值col1
,但它不会显示它们的相应col2
值.
那我该怎么做?
您应该在具有CloudFlare的PHP站点上使用哪些缓存标头,以便" 始终在线 "工作并且您的图像由其CDN缓存?
CloudFlare的文档非常糟糕,他们的支持团队似乎也不知道.
在这种流行的持久登录Cookie 解决方案中,该解决方案涉及生成随机的128位“令牌”以保存在用户的Cookie中,Jens Roland建议:
并且不要将永久性登录COOKIE(令牌)存储在您的数据库中,仅是一种哈希!登录令牌是等效的密码,因此,如果攻击者将您的手放在您的数据库上,则他/她可以使用这些令牌登录到任何帐户,就像它们是明文登录密码组合一样。因此,在存储持久性登录令牌时,请使用强盐散列(bcrypt / phpass)。
但是,当您对Cookie令牌进行加密时,您将如何对照数据库中的加密令牌来检查Cookie令牌以确认Cookie登录有效?(因为加密始终使用随机盐)?
换句话说,您将无法对Cookie令牌进行bcrypt加密,然后在数据库中寻找匹配项,因为您将永远找不到匹配的令牌,因此,如何按照推荐的解决方案将其与数据库中的哈希版本进行实际匹配(“服务器保留一个由数字->用户名关联组成的表,该表将被查找以验证cookie的有效性。
编辑:
请记住,按照上面链接的推荐解决方案,单个用户可以为不同设备使用多个 Cookie /令牌。我提到这是因为提交了一个答案(此答案已被删除),它假定每个用户只有一个令牌。
我需要在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 😎
?
如何[key] => [value]
在 PHP 中的关联数组中的特定关联键之后添加新对?
例如,假设我们有一个名为 的数组$fruits
:
array {
[apple] => 1
[banana] => 3
[orange] => 4
}
Run Code Online (Sandbox Code Playgroud)
如何添加[plum] => 2
到$fruits
使其出现在[apple]
key之后但key 之前[banana]
?
谢谢。
我正在使用 MySQL 并且我已经阅读了几次,这COUNT(*)
通常比COUNT(Column)
.
但是,我需要得到COUNT
的不同行。据我了解,我可以通过两种不同的方式做到这一点:
a) SELECT COUNT(DISTINCT Column) ...
或者
b) SELECT COUNT(*) ... GROUP BY Column
一般来说,哪个更快?如果要看,那还有什么是依赖于?
哪个复合索引可以使这个简单的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)
上面(col1
to 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) 我有以下数组$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!
究竟是什么导致这种奇怪的行为,我该如何解决这个问题呢?
谢谢!
如果在MySQL中将birthdate存储为"Date"类型,那么您如何在PHP中确定它是否是特定用户今天的生日?
这只是抓住生日列值,在爆炸上进行-
,然后检查日期和月份是否与PHP当前日期和月份相匹配?或者是否有更简单,更粗糙的方式呢?
此外,您对今天生日的SELECT
所有用户使用什么查询?