【问题标题】:how to insert random value in to database mysql?如何将随机值插入数据库mysql?
【发布时间】:2014-01-24 01:36:30
【问题描述】:

如何将随机值插入到数据库 mysql 中?

好的,当我加载此代码时,我将有这样的随机数格式

5,3,1,6,4,

我想将 5,3,1,6,4 插入数据库 mysql(1 行 1 列),我该怎么做?

<?
    $cards = array();
    for ($i = 0; $i < 5; $i++) 
            {
            $card = mt_rand(1, 6); 
            if(!in_array($card, $cards))
                    {
                $cards[$i] = $card;
            }
                else
                    {
            $i--;
            }
            } 
        foreach ($cards as $cards) 
            { 
        echo $cards.","; 
            }
?>

【问题讨论】:

    标签: php mysql arrays random


    【解决方案1】:

    按照@Martin 的回答,最简单的方法就是按照您的描述进行操作。

    但是,这可能会在以后搞砸你。理想情况下,您不想在 RDBMS 字段中存储列表;它违背了拥有数据库的全部目的。

    如果你做一个像这样的表

    ID, cardPosition, cardID
    

    你可以这样做:

    $insert = $db->prepare("INSERT INTO cardpositions (cardPosition, cardID) VALUES (:cardPosition, :cardID)");
    foreach ($cards as $cardPosition=>$card) 
            { 
    
        $insert->execute(array(':cardPosition' => $cardPosition, ':cardID' => $card));
            }
    

    执行此操作的错误方法,但您似乎想要的是:

    $cardlist = implode(",",$cards);  //now you have a comma separated list without the trailing comma
    

    如果是 PDO,则执行此操作:

    $insert = $db->prepare("INSERT INTO cardpositions (cardlist) VALUES (:cardlist)");
    $insert->execute(array(':cardlist' => $cardlist));
    

    如果是 mysqli 的话:

    mysqli_query($link, "INSERT INTO yourtable (cardlist) VALUES ('$cardlist')");
    

    【讨论】:

    • 我想制作一个像ID这样的表格,数字列中的数字我想插入5,3,1,6,4,我该怎么做?
    • 意思是我不知道你在说什么:把表定义放在问题里。
    • 好的,我将制作具有 2 列 1.id 和 2.number 的表,我想将 5,3,1,6,4 插入到列号
    • 你所说的“号码”我在上面的答案中称之为“cardlist”。看一看...cardlist 是一个比数字更好的名称,因为它描述了该字段中的实际内容。
    【解决方案2】:

    纯(My)SQL 解决方案:

    INSERT INTO test( x, y )
    SELECT 10*rand(),
           10*rand()
    FROM information_schema.columns
    LIMIT 10;
    

    演示:http://www.sqlfiddle.com/#!2/be6e5/2

    【讨论】:

      【解决方案3】:

      它与插入非随机值有何不同?

      mysqli_query($link, "INSERT INTO yourtable (id, cards) VALUES (NULL, '$cards')");
      

      或类似的东西。

      【讨论】:

      • 不起作用,当我使用你的代码时,它只会将第一个数字插入 mysql(不是所有数据)
      猜你喜欢
      • 2011-10-31
      • 2011-01-30
      • 2013-05-29
      • 2012-04-13
      • 1970-01-01
      • 2023-03-13
      • 2020-12-14
      • 2015-06-18
      • 1970-01-01
      相关资源
      最近更新 更多