【问题标题】:PHP insert the array values into mysqlPHP将数组值插入mysql
【发布时间】:2014-06-12 09:29:39
【问题描述】:

我在将数组插入 MySQL 数据库时遇到问题。我想发现我无法将数组插入表的列中,我应该分离数组的值,然后执行插入操作。但我不知道如何分离这些值并插入这些值。我应该将值分开而不使用数组吗?

我还想创建一个表来显示存储的数据库的所有值(数字 1-10)。

谢谢大家!

下面是我的代码:

  $varNum = array('1','2','3','4','5','6','7','8','9','10');
  //an array showed in the selection box

  <form action="testing_Rand.php" method="post">
    <p><b><center>Choose an amount of random numbers in the selection box</center></b></p>
    <p>
            <select name="selectNum">
                <?php
                    foreach($varNum as $key => $value):
                    echo '<option value="'.$key.'">'.$value.'</option>';
                    endforeach;
                ?>
            </select>
    </p>
    <center><input type="Submit" value="submit"></center>
</form> 
    //A POST function to generate the random numbers


    //do post function
    if(isset($_POST["selectNum"]) ){
    $arrayRand=intval($_POST["selectNum"]);    
    for($i=0;$i<=$arrayRand;$i++){
         $varNum[$i]=rand(1,10000);    
    } 

    var_dump($varNum);  //show results  
    $newRand = "INSERT INTO testing_Rand (number1, number2, number3, number4, number5, number6, number7, number8, number9, number10) VALUES ('$varNum')";
    mysql_query($newRand);
}

    //show mysql database results

        $sqlDBrand = "SELECT id, number1, number2, number3, number4, number5, number6, number7, number8, number9, number10 FROM rand.testing";
$result = mysql_query($sqlDBrand) or die('MySQL query error');
while($row = mysql_fetch_array($result)){
    echo $row['id'];
    echo $row['number1'];
    echo $row['number2'];
    echo $row['number3'];
    echo $row['number4'];
    echo $row['number5'];
    echo $row['number6'];
    echo $row['number7'];
    echo $row['number8'];
    echo $row['number9'];
    echo $row['number10'];
}

【问题讨论】:

  • 您的INSERT 查询在该代码中在哪里?
  • 你错过了INSERT查询吗?
  • 向我们展示您的插入语句
  • "INSERT INTO rand.testing (number1, number2, number3, number4, number5, number6, number7, number8, number9, number10) VALUES ('$varNum')";
  • 但这不起作用,因为它无法将数组插入数据库,而且数组值也没有分开。我不知道如何编写这个函数,对不起。

标签: php mysql arrays


【解决方案1】:

我认为这可能对您有所帮助, 先创建一个字符串$sql,然后在mysql_query()中使用

  $sql="INSERT INTO rand.testing (number1, number2, number3, number4, number5, number6, number7, number8, number9, number10) VALUES (";
       $sql.=implode(',', $varNum);
       $sql.=")";
mysql_query($sql);

【讨论】:

    【解决方案2】:

    这取决于您的数据和目标。

    看看函数implode

    $arr = [1,2,3,4,5];
    $data = implode ('|', [1,2,3,4,5]) //1|2|3|4|5
    $arr = explode('|', $data); //Converted back
    

    http://www.php.net/manual/de/function.implode.php

    如果您需要它可搜索,考虑到 XML 的序列化

    $arr = [1,2,3,4,5];
    $xml = new SimpleXMLElement('<root/>');
    array_walk_recursive($arr, array ($xml, 'addChild'));
    

    https://stackoverflow.com/a/1397164/2441442

    如果你需要它不可搜索,你也可以看看serialize

    $arr = [1,2,3,4,5];
    $data = serialize($arr);
    unserialize($data);
    

    http://php.net/manual/de/function.serialize.php

    【讨论】:

      【解决方案3】:

      回到一个阶段,您有一个表,其中包含固定数量的列,但要存储的数据字段数量可变。这通常是个坏主意。

      最好将其拆分为 2 个表。一个只是存储一些东西来识别一组数字,另一个表对于每组数字有几行;每组每个随机数一行。

      这是数据标准化的基本部分。

      您可以将 插入到 2 个表中并使用以下内容获取值:-

      <?php
          //A POST function to generate the random numbers
      
      
          //do post function
          if(isset($_POST["selectNum"]) )
          {
              $arrayRand=intval($_POST["selectNum"]);    
              for($i=0;$i<=$arrayRand;$i++)
              {
                  $varNum[$i]=rand(1,10000);    
              } 
      
              if (count($varNum))
              {
                  var_dump($varNum);  //show results  
                  $newRand = "INSERT INTO testing_rand (id) VALUES(NULL)";
                  mysql_query($newRand);
                  $inserted_id = mysql_insert_id ();
                  $newRand = "INSERT INTO testing_rand_numbers (rand_id, number) VALUES($inserted_id, ".implode("),($inserted_id, ", $varNum).")";
              }
          }
      
          //show mysql database results
      
          $sqlDBrand = "SELECT id, GROUP_CONCAT(b.number) AS all_numbers FROM testing_rand a LEFT OUTER JOIN testing_rand_numbers b ON a.id = b.rand_id";
          $result = mysql_query($sqlDBrand) or die('MySQL query error');
          while($row = mysql_fetch_array($result))
          {
              echo $row['id'];
              echo $row['all_numbers'];
          }
      ?>
      

      【讨论】:

        猜你喜欢
        • 2016-05-26
        • 2011-11-10
        • 2011-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-15
        • 2015-01-19
        相关资源
        最近更新 更多