小编fru*_*cup的帖子

如果值大于当前值,则更新MySQL

我将继续发布我可怕的MySQL代码:

INSERT INTO monthlystats (id, server, time, uptime, players, rank) 
VALUES (09126, 6, 0912, 302, 0, 1) 
ON DUPLICATE KEY UPDATE uptime = if(302 > uptime, 302, uptime), if(0 > players, 0, players), if(1 > rank, 1, rank)
Run Code Online (Sandbox Code Playgroud)

好的,让我解释一下我在做什么.

  1. "id"具有唯一索引.如果该索引尚不存在,我想插入这些值.
  2. 如果存在重复键,我想改为更新3个字段中的每个字段,只要新值大于表中当前的值.

看起来我做的事情非常糟糕,我坦率地说不知道该怎么办.我试着把它弄好,但结果却是一团糟.

我希望有人可以引导我朝着正确的方向前进,并帮助我学习(以及其他任何想要学习的人)如何做这样的事情.谢谢.

mysql

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

MySQL - 用不同的条件计算两件事

我想在一个查询中计算不同条件下的两件事.

SELECT COUNT(*) AS count FROM table_name WHERE name = ?
Run Code Online (Sandbox Code Playgroud)

SELECT COUNT(*) as count FROM table_name WHERE address = ? AND port = ?
Run Code Online (Sandbox Code Playgroud)

我需要对具有特定地址和特定端口的行进行计数,对具有特定名称的行进行SEPARATE计数.

我知道我能做到

SELECT (COUNT*) as count FROM table_name WHERE (address = ? AND port = ?) OR name = ?
Run Code Online (Sandbox Code Playgroud)

然而,这是一个统计,我需要它们是分开的,所以我可以向用户显示更准确的消息.

我该怎么做呢?帮助将不胜感激!

mysql count

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

PHP openssl_public_encrypt"关键参数不是有效密钥"

我有这个RSA公钥:

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtixUGzGpLXgZ7AV1HfmIHV/FEF+fww77FekRc2oLhUOd4HitwCPo76fjtdsQBEt8w9HZ3CXVphaAU2BA6MEZJ3ShVMsdAXb2ZA1C+lu7k1GV9M/BhucTg35HujSK647Sc5MwVLwFsN80dAnGsZF8gwb2TNUzXHwzbAb30T01zuqf8RCM75OwKZFYqzu7FOVrtk/w9mh92MOXG0l7WSqNIctu8Kxka/tEJJIA5nqMGNMocjwprXy66NS7FFy1GY+NnxfFLtODqq0tllc50UCDsnqSvNmj2wcnAcsCzNOoxPPgp7t8S+sQvOzgc5W3CDjIsYEiGD+vzSVNkGiRou577wIDAQAB
Run Code Online (Sandbox Code Playgroud)

(我尝试的每个其他键也会产生相同的错误)

而这个字符串:

$str = "VOTE\n" .
"server-list\n" .
"$user\n" .
"$userip\n" .
time()."\n";
Run Code Online (Sandbox Code Playgroud)

我使用此代码使字符串成为正好256字节,以便它遵循此特定应用程序的标准:

$leftover = (256 - strlen($str)) / 2;
while ($leftover > 0) {
    $str .= "\x0";
    $leftover--;
}
Run Code Online (Sandbox Code Playgroud)

要格式化密钥,我这样做:

    $key = wordwrap($key, 65, "\n", true);
    $key = <<<EOF
    -----BEGIN PUBLIC KEY-----
    $key
    -----END PUBLIC KEY-----
EOF;
Run Code Online (Sandbox Code Playgroud)

当我这样做时,openssl_public_encrypt($str, $encrypted, $key);我收到以下警告:

Warning: openssl_public_encrypt() function.openssl-public-encrypt: key parameter is not a valid public key in ...

我不确定为什么会这样.当我回应它时,这就是键的样子:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtixUGzGpLXgZ7AV1HfmIH
V/FEF
fww77FekRc2oLhUOd4HitwCPo76fjtdsQBEt8w9HZ3CXVphaAU2BA6MEZJ3ShVMsd
AXb2ZA1C
lu7k1GV9M/BhucTg35HujSK647Sc5MwVLwFsN80dAnGsZF8gwb2TNUzXHwzbAb30T
01zuqf8RCM75OwKZFYqzu7FOVrtk/w9mh92MOXG0l7WSqNIctu8Kxka/tEJJIA5nq
MGNMocjwprXy66NS7FFy1GY …
Run Code Online (Sandbox Code Playgroud)

php encryption warnings openssl rsa

7
推荐指数
1
解决办法
1万
查看次数

PHP || 和&&逻辑优化

我是一个优化狂热者(至少按照我的定义),这个问题已经困扰了我很长一段时间.

我想知道PHP是否对&&和||进行了一些优化:采用以下示例:

$a = "apple";
$b = "orange";
if ($a == "orange" && $b == "orange") {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

当该代码执行时,它将检查$ a是否等于"orange".在这种情况下,它不是.但是,有一个&&运算符.由于第一部分($ a =="orange")已经返回false,PHP仍会检查$ b是否等于"orange?"

我对||有同样的问题:

$a = "orange";
$b = "orange";
if ($a == "orange" || $b == "orange") {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

当它检查$ a是否等于"orange"时,它返回true.因为那会使|| 运算符返回true,PHP甚至会检查||的第二部分 (因为我们已经知道它会是真的)?

希望我在这里有意义,希望有人能给我一个答案.谢谢!

php optimization performance logic

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

MySQL - 其他表中最近的平均列

我有两个表:"服务器"和"统计数据"

服务器有一个名为"id"的列,可以自动递增.stats有一个名为"server"的列,对应于servers表中的一行,一个名为"time"的列表示它被添加的时间,还有一个名为"votes"的列,我希望得到它的平均值.

我想获取所有服务器(SELECT * FROM servers)以及与每个服务器对应的24个最新行的平均投票.我相信这是一个"每组最大的"问题.

这是我尝试做的,但它总共给了我24行,而不是每组24行:

SELECT servers.*,
       IFNULL(AVG(stats.votes), 0) AS avgvotes
FROM servers
LEFT OUTER JOIN
  (SELECT server,
          votes
   FROM stats
   GROUP BY server
   ORDER BY time DESC LIMIT 24) AS stats ON servers.id = stats.server
GROUP BY servers.id
Run Code Online (Sandbox Code Playgroud)

就像我说的,我想为每个服务器获取最近24行,而不是最近24行.

mysql join greatest-n-per-group

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

AVAssetExportSession未启动导出/卡住等待

我正在尝试使用AVFoundation加入2个视频片段.出于测试目的,这里我尝试加载单个视频剪辑,将其视频和音频曲目添加到合成中,然后使用导出AVAssetExportSession.

当我运行下面的代码时,输​​出"Exporting",但永远不会执行导出回调.此外,如果我定期检查export(print(exporter.progress))的进度,我发现进度始终为0.0,即使在几分钟后也是如此.如果我打印状态,我发现它正在"等待"某些东西.

// URL to video file
let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("video.mov")

// Create composition and tracks
let comp = AVMutableComposition()
let videoTrack = comp.addMutableTrack(withMediaType: AVMediaType.video, preferredTrackID: kCMPersistentTrackID_Invalid)
let audioTrack = comp.addMutableTrack(withMediaType: AVMediaType.audio, preferredTrackID: kCMPersistentTrackID_Invalid)

// Create asset from file
let asset = AVAsset(url: fileURL)

// Insert video
try! videoTrack?.insertTimeRange(CMTimeRangeMake(kCMTimeZero, asset.duration), of: asset.tracks(withMediaType: AVMediaType.video)[0] as AVAssetTrack, at: kCMTimeZero)

// Insert audio
try! audioTrack?.insertTimeRange(CMTimeRangeMake(kCMTimeZero, asset.duration), of: asset.tracks(withMediaType: AVMediaType.audio)[0] as AVAssetTrack, at: kCMTimeZero)

// Delete existing …
Run Code Online (Sandbox Code Playgroud)

avfoundation ios swift

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

让jQuery AJAX有一个非javascript(非ajax)回退?

我已经在我的最新项目上完成了相当多的工作,但我意识到有一个问题:如果你没有支持Javascript的浏览器,你就不能提交任何表格,因为每个表格都使用AJAX提交它.

我向大家提出的问题是:我如何实现某种"后备",这样如果他们没有启用Javascript,他们仍然可以提交表单.

目前,我在标题中有一个横幅,上面写着"为了获得最佳(并且通过"最佳,"我们的意思是"实际工作")体验,请在浏览器中启用Javascript." 但这似乎不是最佳解决方案.

谢谢!

forms ajax jquery progressive-enhancement submit

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

MySQL - INSERT ON DUPLICATE KEY - 2列

我将记录用户登录的IP地址.为此,我有一个包含3列的简单表:user,ip,time.时间是他们上次使用该地址登录的时间.

当他们登录时,我想在包含他们登录的IP的数据库中插入一行,以及他们登录的时间.

如果已经存在具有相同用户和相同ip的行,我只想更新时间.一个更普遍的问题:

如果两列(或更多)列相同,我如何插入行或更新它?

mysql

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

Node.js Sequelize getter/setter RangeError

我正在创建一个表来存储用户会话。我将使用以下方法将 IP 地址存储为整数: IP 地址存储为整数存储为 int 的 IP 地址会导致溢出?

我想为 IP 字段指定一个 getter 和 setter,以便它可以在 IP 和 int 之间自动转换。

不幸的是,我收到以下错误,我不知道发生了什么。我一直试图修复它几个小时,但谷歌没有给我任何结果:

RangeError: Maximum call stack size exceeded

模型:

model = db.define(name, {
    id: {type: Sequelize.STRING, allowNull: false, primaryKey: true},
    ipAddress: {type: Sequelize.INTEGER(11).UNSIGNED, allowNull: false},
    userAgent: {type: Sequelize.STRING, allowNull: false},
    username: {type: Sequelize.STRING, allowNull: false},
    password: {type: Sequelize.STRING, allowNull: false},
    firstName: {type: Sequelize.STRING, allowNull: false},
    lastName: {type: Sequelize.STRING, allowNull: false},
    email: {type: Sequelize.STRING}
}, {
    getterMethods: {
        name: function() { return this.firstName …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express sequelize.js

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

Java FlowLayout - 特定元素的边距/填充?

我是Swing的新手,我正在尝试制作一个GUI.使用Netbeans的GUI创建者的东西,我设法制作了我喜欢的东西.但是我使用编辑器让我感觉很糟糕,所以现在我尝试使用代码进行相同的设计.这是我想要制作的图片: 我想做什么 现在我只专注于创建"标准"部分(是的,我知道我在图片中拼错了)这是我目前所拥有的: 我现在有什么 我用红色突出显示了我想增加保证金的地方:

  • 在文本框的右侧和标签的左侧之间
  • 在Criteria面板的顶部和JFrame之间
  • 在面板的左侧和右侧与JFrame之间

我来自网络开发,增加利润是我想要做的.如果这是不正确的术语,请通知我.这是我目前使用的代码:

public class Criteria extends JPanel {
    JLabel JobLabel = new JLabel();
    JLabel BoxLabel = new JLabel();
    JLabel PartLabel = new JLabel();
    JTextField JobInput = new JTextField();
    JTextField BoxInput = new JTextField();
    JTextField PartInput = new JTextField();

    public Criteria() {
        setLayout(new FlowLayout(FlowLayout.LEADING));
        setBorder(BorderFactory.createTitledBorder("Criteria"));
        JobLabel.setText("Job");
        JobLabel.setLabelFor(JobInput);
        BoxLabel.setText("Box");
        BoxLabel.setLabelFor(BoxInput);
        PartLabel.setText("Part");
        PartLabel.setLabelFor(PartInput);
        JobInput.setColumns(8);
        BoxInput.setColumns(8);
        PartInput.setColumns(8);
        add(JobLabel);
        add(JobInput);
        add(BoxLabel);
        add(BoxInput);
        add(PartLabel);
        add(PartInput);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何为这些组件添加保证金,所以非常感谢帮助.如果我无法通过FlowLayout实现此效果,请告诉我应该使用的是什么.

java swing padding layout-manager gaps-in-visuals

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