2014-06-12 141 views
0

我在將數組插入MySQL數據庫時遇到了問題。我想知道我不能在表中插入數組,然後我應該分開數組的值,然後執行插入操作。但我不知道如何分隔值並插入這些值。我應該分開值而不使用數組嗎?PHP將數組值插入到mysql

另外我想創建表來顯示存儲的數據庫的所有值(number1-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']; 
} 
+0

哪裏是在代碼的'INSERT'查詢? –

+0

你錯過了'INSERT'查詢嗎? – n3ISe

+0

向我們展示您的插入語句 –

回答

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); 
0

它取決於你的數據,並在使用它你目標。

看看功能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

如果您需要它不是海rchable,你也可以看看serialize

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

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

0

讓我們回到一個階段,你有一個固定的數列,但數據存儲領域的可變數量的表。這通常是一個壞主意。

將它分成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']; 
    } 
?>