我现在已经搜索了4个小时,并且没有找到解决方案来获取JavaScript中年,月和日的两个日期之间的差异,例如:2010年4月10日是3年,x个月和y天前.
有很多解决方案,但它们只提供日期或月份或年份的格式差异,或者它们不正确(意味着不处理一个月或闰年的实际天数等).这样做真的很难吗?
我看过:
在PHP中它很容易,但不幸的是我只能在该项目上使用客户端脚本.任何能够做到这一点的库或框架都可以.
以下是日期差异的预期输出列表:
//Expected output should be: "1 year, 5 months".
diffDate(new Date('2014-05-10'), new Date('2015-10-10'));
//Expected output should be: "1 year, 4 months, 29 days".
diffDate(new Date('2014-05-10'), new Date('2015-10-09'));
//Expected output should be: "1 year, 3 months, 30 days".
diffDate(new Date('2014-05-10'), new Date('2015-09-09'));
//Expected output should be: "9 months, 27 days".
diffDate(new Date('2014-05-10'), new Date('2015-03-09'));
//Expected output should be: "1 year, 9 months, 28 days".
diffDate(new Date('2014-05-10'), new Date('2016-03-09')); …Run Code Online (Sandbox Code Playgroud) 任何人都可以解释原因
$sql->execute($params);
Run Code Online (Sandbox Code Playgroud)
返回FALSE,而
print $pdo->errorCode();
print_r($pdo->errorInfo());
Run Code Online (Sandbox Code Playgroud)
两者都归还SQLSTATE 00000,这意味着根据文件的成功?它是一个INSERT,实际上没有任何东西被插入到数据库中...所以,为什么我会从中获得成功消息SQLSTATE?
如果它有帮助,这是代码......
$sql = $pdo->prepare("
INSERT INTO user (
username, fname, pass, salt, email,
loc_id_home, country_id_home, region_id_home,
cont_id_home, timestamp_reg, timestamp_upd, timestamp_lastonline,
online_status, gender, birthdate
)
VALUES (
:username,:fname,:pass,:random_salt,:email,
:loc_id_home,:country_id_home,:region_id_home,
:cont_id_home,'".time()."','".time()."','".time()."',
1,:gender,:birthdate)
");
$params=array(
':username'=>$username,
':fname'=>$fname,
':pass'=>$pass,
':random_salt'=>$random_salt,
':email'=>$email,
':loc_id_home'=>$loc_id_home,
':country_id_home'=>$country,
':region_id_home'=>$region,
':cont_id_home'=>$continent,
':gender'=>$gender,
':birthdate'=>$birthdate
);
$sql->execute($params);
print $pdo->errorCode();
print_r($pdo->errorInfo());
Run Code Online (Sandbox Code Playgroud) 任何人都可以给我一个想法或暗示如何在数据库表(MySQL)中连续X天检查登录(用户ID,时间戳)的存储情况?
Stackoverflow可以做到这一点(例如像Enthusiast这样的徽章 - 如果你连续登录30天左右......).你必须使用什么功能或者如何做到这一点的想法是什么?
有点像SELECT 1 FROM login_dates WHERE ...?
我使用MySQL 5.1并将一个大约2.7密耳行的UTF-8解码的txt文件加载到一个表中,该表本身被声明为utf8_unicode_ci,并且所有字段都被声明为utf8_unicode_ci,使用LOAD DATA INFILE...
在数据库本身,人物似乎都是正确的,一切看起来都不错.但是,当我使用php打印它们时,字符显示为???,尽管我在HTML头中使用utf-8声明:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
...
Run Code Online (Sandbox Code Playgroud)
在另一个表(使用utf-8)中,我从提交的表单中插入文本,这些字符在数据库中显得异常,但在我使用时打印出来时再次正确显示SELECT....
所以,我想知道:出了什么问题?是否UTF-8在数据库中正确显示字符或奇怪地显示字符,但SELECT再次显示它们时它们是否正常?或者问题在哪里(将文件加载到数据库中,在HTML中或其间的某个地方)?
非常感谢您的任何提示或建议!:)
在jQuery中执行以下操作:
$('#signupbox1').on('click', '#signup1', function() {
var str = $('#signupform').serialize();
// make it look like a waiting button
$('#signup1').addClass("btn_wait");
var btn_val = $('#signup1').val();
$('#signup1').val('');
$.ajax({
type: "POST",
url: "signup_step1.php",
data: str,
success: function(msg) {
//doing stuff here
$('#signup1').removeClass("btn_wait");
$('#signup1').val(btn_val);
}
});
});
Run Code Online (Sandbox Code Playgroud)
你怎么能禁用点击事件,直到你收到ajax电话的答案?因此,当您点击按钮时,由于添加了类,它不仅"转换"为等待按钮,而且点击事件也将"暂停"......这可能吗?
非常感谢你提前!
就在最近,我转而使用PHP/MySQL中的PDO并转换了几十个查询.他们中的大多数都在工作,但是这很容易就会引发异常$sql->execute()
$sql=$pdo->prepare("SELECT id FROM user WHERE username = :username LIMIT 1");
$sql->execute(array(':username',$username));
Run Code Online (Sandbox Code Playgroud)
PDOStatement :: execute()pdostatement.execute SQLSTATE [HY093]:参数号无效:绑定变量数与...中的标记数不匹配
经过研究,我发现了这个链接:https://bugs.php.net/bug.php?id = 60515
...因此尝试将查询更改为
$sql=$pdo->prepare("SELECT `id` FROM `user` WHERE `username` = :username LIMIT 1");
$sql->execute(array(':username',$username));
Run Code Online (Sandbox Code Playgroud)
但仍然有相同的结果.有人看到了什么是明显错误的,或者为什么这个查询在其他所有人都没有的时候不起作用?
非常感谢你提前!
这个问题应该足够明确,但是使用它代替它有什么好处
SELECT 1 FROM table ...
SELECT 1 FROM table ... LIMIT 1?
我使用jQuery来动态计算textarea的值:
function count_chars () {
count_chars=$('#text_textarea').val().length;
}
Run Code Online (Sandbox Code Playgroud)
...然后提交序列化表单,通过ajax将textarea的文本发送到php文件,然后验证服务器端的文本.但是,我遇到了换行符和空格问题.
当然,如果我只是从textarea获取"原样"的文本,php会将每个新行计为两个或四个字符(\n,...).所以我试着用这样的东西替换它们:
strlen(str_replace(array("\r", "\n"), ' ', $text)))
Run Code Online (Sandbox Code Playgroud)
或这个:
strlen(preg_replace('/\s+/', ' ', trim($text)))
Run Code Online (Sandbox Code Playgroud)
但是,如果我得到例如10个段落并且jQuery返回2500个字符,则php将返回2510或2490,这取决于我是用空格替换新行还是完全删除它们.所以差异是20,但只有10个新线......?
我错过了什么?我怎样才能让php返回与jQuery相同的结果?问题出在哪里,在php或jQuery中?
1 - PRIMARY用于二级索引,例如(PRIMARY,column1)上的二级索引
2 - 我知道只要一个部件用于范围扫描,mysql就无法继续使用索引的其余部分,但是:IN (...,...,...)不被认为是范围,是吗?是的,它是一个范围,但我读过mysqlperformanceblog.com,IN其行为与BETWEEN根据索引的使用不同.
谁能证实这两点?或者告诉我为什么这不可能?或者它是如何可能的?
更新:
链接:
http://www.mysqlperformanceblog.com/2006/08/10/using-union-to-implement-loose-index-scan-to-mysql/
http://www.mysqlperformanceblog.com/2006/08/ 14/MySQL的-跟帖上工会的查询优化查询,分析/发表评论页面-1 /#评论-952521
更新2:嵌套SELECT的示例:
SELECT * FROM user_d1 uo
WHERE EXISTS (
SELECT 1 FROM `user_d1` ui
WHERE ui.birthdate BETWEEN '1990-05-04' AND '1991-05-04'
AND ui.id=uo.id
)
ORDER BY uo.timestamp_lastonline DESC
LIMIT 20
Run Code Online (Sandbox Code Playgroud)
所以,外SELECT使用timestamp_lastonline用于排序,内或者PK与所述外或连接birthdate用于过滤.
如果MySQL不能在范围扫描上使用索引并进行排序,那么还有哪些其他选项而不是此查询?
在php.net示例中mail(),使用了两个不同的地址$to和附加标题信息"To:...":
<?php
// multiple recipients
$to = 'aidan@example.com' . ', '; // note the comma
$to .= 'wez@example.com';
$subject = 'Birthday Reminders for August';
// message
$message = '<html> ... </html>';
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers …Run Code Online (Sandbox Code Playgroud)