小编Chr*_*ski的帖子

从mysql数据库返回随机行而不使用rand()

我希望能够从数据库中提取15个左右的记录.我已经看到WHERE id = rand()随着数据库变大,使用会导致性能问题.我见过的所有解决方案都是为了选择单个随机记录.我想得到倍数.

有谁知道为大型数据库执行此操作的有效方法?

编辑:

进一步编辑和测试:

我在使用MyISAM的新数据库上创建了一个相当简单的表.我给了这3个字段:( autokey无符号自动数字键)bigdata(大blob)和somemore(中等int).然后我将随机数据应用到表中并使用Navicat运行一系列查询.结果如下:

Query 1: select * from test order by rand() limit 15

 Query 2: select * 
          from 
      test 
          join 
      (select round(rand()*(select max(autokey) from test)) as val from test limit 15)                                           as rnd
      on 
          rnd.val=test.autokey;`
Run Code Online (Sandbox Code Playgroud)

(我尝试了选择和选择不同,它没有明显的区别)

和:

Query 3 (I only ran this on the second test):
SELECT  *
    FROM    (
    SELECT  @cnt := COUNT(*) + 1,
            @lim := 10
    FROM    test
    ) vars
    STRAIGHT_JOIN …
Run Code Online (Sandbox Code Playgroud)

php mysql random

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

数据库查询计数所有是/否投票及其所属的db记录?

我有两个表,一个用于文章/民意调查,一个用于对这些文章进行投票.投票在枚举字段中进行上/下,以及其他几个选项.我正在尝试创建一个查询,它将返回我需要的文章数据,并给我所有投票的总和.不幸的是,我得到了意想不到的结果.它统计了我所有的选票,就好像他们是第一次进入,而没有其他任何人.

如何正确地将我的投票链接到他们所属的民意调查?

tblVotes
[PK] primaryId  |    voterId (FK)  | voteValue (enum) |    postID (fk)
----------------------------------------------------------------------
     1                    10                 up              1
     2                    11                 down            1
     3                    11                 up              10

tblContent
[PK] unique Id |   postTitle   |   postBody  |   postAuthor(FK)  |
------------------------------------------------------------------
       1               foo           foofoo          12
      10               bar           barbar          10
      11               foobar    foofoobarbar        10
Run Code Online (Sandbox Code Playgroud)

当我调查下面详述的查询时,我希望我会得到这样的结果:

uniqueId |userName | pollDate | postTitle  |postBody  | upVotes| downVotes
--------------------------------------------------------------------------
   1         bob      1/1/11      foo        foofoo      1         1
  10         john     1/2/11      bar        barbar      1         null
  11         john     1/3/11 …
Run Code Online (Sandbox Code Playgroud)

mysql sql aggregate-functions

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

仅当用户与<canvas>交互时才禁用箭头键滚动

我在JS中添加了一个事件监听器来监听keyup/keydown事件,我试图在HTML画布上移动一个sprite.我有大部分工作,但当用户按下箭头键时页面正在滚动.

我回归虚假,这似乎不起作用.另外,我的理解是以这种方式返回false会禁用整个页面的箭头按钮滚动.我想只在用户与画布本身交互时禁用它.

这是我的事件监听器:

addEventListener('keydown', function(e){
    move = false;
    x = false;
    y = false;
    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;
    switch(keycode){
        case 37:
            move = true;
            x = 'negative';
        break;
        case 38:
            move = true;
            y = 'negative'
        break;
        case 39:
            move = true;
            x = 'positive'
        break;
        case 40:
            move = true;
            y = 'positive'
        break;
    }
    if(move){
        animation.move(x,y);
    }
    return false;
})
Run Code Online (Sandbox Code Playgroud)

编辑:

下面的答案很清楚如何确保画布是专注的,但我仍然感到困惑,为什么在我的EventListener函数中返回false,返回false不会禁用滚动.

javascript scroll event-listener addeventlistener html5-canvas

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

根据data-*属性显示和隐藏元素

这似乎对JQuery来说应该是微不足道的,但是这个函数隐藏了整个表单......有人能指出我正确的方向吗?

$('form')
        .children()
        .filter(function(){
            return $(this).data('show', 'pro')
        })
        .show();
$('form')
         .children()
         .filter(function(){
             return $(this).data('show', 'home')
         })
         .hide();
Run Code Online (Sandbox Code Playgroud)

jquery show-hide custom-data-attribute

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

HTML5 audio.volume的规格是什么

我似乎有些代码表明使用javascript你可以<audio>使用类似的东西来设置HTML5 元素的音量级别document.getElementById('player').volume-=0.1,但我找不到任何指示音量范围的东西?0-5?0-10?0-100?有谁知道audio标签的最大音量是多少,以及可以提出的最小增量是多少?

javascript html5 html5-audio

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

你怎么看这个JavaScript代码?(var1?var2:var3)

我已经看到了JavaScript代码中使用的这种格式,但找不到合理的意义来源.

编辑后续行动:

感谢所有快速解答!我觉得它就像那样.现在,获得奖励积分:

你能用吗(var1?var2)

做同样的事情

    if (var1) {
        var2
    }
Run Code Online (Sandbox Code Playgroud)

javascript operators

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

按键排序数组OR:为什么我的for循环执行乱序?

我有一个对象数组,我需要按照一定的顺序放置,具体取决于一些配置数据.我有一个问题,以正确的顺序itterating通过数组.我想如果我制作了数组,然后逐步执行for循环,我就能正确执行代码.除了一个用例之外,它工作得很好,我将第四个项添加到数组中,然后返回第三个项.

links[0] = foo
links[1] = bar
links[2] = foobar
links[3] = a_herring
links[4] = a_shrubery

order = [] //loaded from JSON, works has the numbers 1 2 3 or 4 as values
           //in this case:
order[0] = 1
order[1] = 2
order[2] = 4
order[3] = false
order[4] = 3

for(x in order){        
   if(order[x]){
    printOrder[order[x]]=links[x]
    //remember that in this case order[0] would
}
Run Code Online (Sandbox Code Playgroud)

这应该给我一个如下所示的数组:

//var printOrder[undefined,foo,bar,a_shrubbery,foobar]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试通过数组进行迭代时:

    for(x in printOrder){
        printOrder[x].link.appendChild(printOrder[x].image)
        printOrder[x].appendChild(printOrder[x].link)
        printOrder[x].appendChild(printOrder[x].text)
        document.getElementById("myDiv").appendChild(printOrder[x]);
    }
Run Code Online (Sandbox Code Playgroud)

我得到foo, bar, foobar, …

javascript arrays for-loop

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

使用javascript/jquery查找链接目标图像

我正在尝试编写一个脚本,它将找到<a>目标是jpg,gif或png的所有标记,并为它们附加一个函数.

$('a')
    .filter(function(){
        return this.href.match(/*probably some regex here?*/)
    })
    .bind('mouseover', function(){
        alert('foo');
    })
Run Code Online (Sandbox Code Playgroud)

这应该有效,但我不知道正则表达式会是什么样子.如果有更好的方法,请告诉我.谢谢!

regex jquery

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

在foreach循环中的PDO :: bindParam,所有值都被设置为相同?

我试图使用一个函数重复数据库调用使生活变得更容易,该函数应该(理论上)允许我使用数组绑定参数:

    function query($tblName,$queryParams = false){
    $this->queryObject = $this->con->prepare($this->queryString);
    if($queryParams){
        foreach ($queryParams as $key => $value) {
            $this->queryObject->bindParam($key, $value);
        }
    }
    $this->queryResult = $this->queryObject->execute();
    print_r($this->queryResult);
}
Run Code Online (Sandbox Code Playgroud)

然后我就这样打电话:

$queryParams = array(':userName' => $_POST['username'], ':password' => $_POST['password'], ':salt'=>$userUser->salt, ':userEmail'=>$_POST['email']);
$registrationDb->query('tblUser', $queryParams);
Run Code Online (Sandbox Code Playgroud)

数据库连接正在运行,并且正在进行写入,但是,所有值都被设置为$_POST['email],我无法弄清楚为什么会发生这种情况.

有没有更好的方法来做到这一点?

php mysql foreach pdo

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

如何将数组手动编码为JSON字符串?

我需要编写一个将被解释为数组的JSON字符串,但只有某些索引实际上会有任何值.

我想要一个看起来像这样的数组:

array[1] = ["foo", "bar"]
array[5] = ["things", "stuff"]
array[37] = ["etc"];
Run Code Online (Sandbox Code Playgroud)

所以我可以回复"东西" array[5][1].

问题是并非所有东西都有值,而且我正在手工编写这个字符串,所以我真的不想从0开始并执行所有空值.是否有捷径可寻?

javascript json multidimensional-array

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

CSS规则不匹配?为什么不?

好吧,理论上这应该是一个简单的,希望我只是遗漏了一些明显的东西.我有以下HTML标记:

<ul id="cPlayControlRack">
    <li class="cplaybutton"></li>
    <li class="CpauseButton CplayHidden"></li>
    <li class="CplaySkipBack"></li>
    <li class="CplaySkipForward"></li>
    <li class="CplayVolumeIcon"></li>
    <li class="CplayVolumeSlide"></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

以下CSS:

#cPlayControlRack{
    height:28px;
}
#cPlayControlRack li{
    width:29px !important;
    height:28px !important;
    background-image:url(background:url(i/playersprite.png);
    background-repeat:no-repeat;
    display:block;
}
.cplaybutton{background-position:0 0;}
.CpauseButton{background-position:30px 0;}
.CplaySkipBack{background-position:60px 0;}
.CplaySkipForward{background-position:90px 0;}
.CplayVolumeIcon{background-position:120px 0;}
.CplayVolumeSlide{background-position:150px 0;}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,第一条规则是匹配.#cPlayControlRack使得UL28px高.但是,没有其他规则匹配,因此没有显示精灵,并且没有给出高度或宽度.

JSFiddle:http://jsfiddle.net/4r2jm/

编辑:我的标记是动态生成的,而不是那应该会产生差异的AFAIK.

css

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

查找一组元素中的任何成员是否具有类

我试图看看是否有任何输入使用JQuery类"无效".

$('#formId input').hasClass('invalid'); 
Run Code Online (Sandbox Code Playgroud)

正在恢复false.即使在我使用.addClass('invalid')了输入并通过Chrome的DOM检查员验证该类存在之后.

以下建议无效.我的标记与形式>输入略有不同.

http://jsfiddle.net/Jv4tG/

css jquery

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

PHP安全登录脚本 - md5哈希与我在以前的脚本中写入数据库的哈希不匹配?

我正在尝试将PHP中的登录脚本拼凑成一个学习项目.

这是用户注册时我的数据库写入的代码.这两个值都写入数据库.

 $this->salt = md5(uniqid());
 $this->password = md5($password.$salt);
Run Code Online (Sandbox Code Playgroud)

登录后,将触发以下函数.

function challengeLogin($submittedPassword, $publicSalt, $storedPassword){
    if(md5($submittedPassword.$publicSalt) == $actualPassword){
        return 0;
    }else{
        return 1;
    };
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,在单步执行代码时,这两个值从未达到过.有人可以帮我理解为什么吗?

php md5 salt login-script

0
推荐指数
1
解决办法
828
查看次数