2014-02-07 27 views
1

我有這兩個文本字段,要求用戶輸入限制爲49個數字的兩個數字,這樣我可以有一個數字1到50或151到200,或27551至27600任何數字,但一系列49個連續的數字,我的問題是我不知道如何將它們放入數據庫內,我不知道如何一直在尋找插入數組的所有內容,但他們不工作在我的情況下,插入一個數組到MySQL使用PHP

這是我的形式

<form id="form3" name="form1" method="post" action=""> 
    <p>From: 
    <input type="text" name="from" id="form_number" class="from" /> 
    - To: 
    <input type="text" name="to" id="form_number" class="to" /> 
    </p> 
    <p>Waybill Booklet: 
    <select name="waybill_booklet[]" id="form_list"> 
     <?php 
      do { 
     ?> 
     <option value="<?php echo $row_Booklet['id_waybill_booklet']?>"><?php echo $row_Booklet['booklet_no']?></option> 
     <?php 
      } while ($row_Booklet = mysql_fetch_assoc($Booklet)); 
      $rows = mysql_num_rows($Booklet); 
      if($rows > 0) { 
      mysql_data_seek($Booklet, 0); 
      $row_Booklet = mysql_fetch_assoc($Booklet); 
      } 
     ?> 
    </select> 
    </p> 
    <p> 
    <input type="hidden" name="status[]" value="4" /> 
    <input type="submit" name="button" id="form_button" value="OK!" /> 
    </p> 
</form> 

49系列的連續編號的將被插入到d atabase有一個外鍵從下拉菜單中選擇什麼,並且隱藏字段中的值爲4,所以基本上我的表1有4列,主鍵爲1,數字爲1,外鍵爲1關鍵字,最後是數字的值。

這是我的PHP代碼來獲取一系列數字

<?php 
$booklet = $_POST['waybill_booklet']; 
$status = $_POST['status']; 
$from = $_POST['from']; 
$to = $_POST['to']; 
$number = range($from,$to); 

$count = 0; 
$myArray = range($from,$to); 
while($count<=49){ 
if($count<49){ 
    echo $myArray[$count]. ", "; 
}else{ 
    echo $myArray[$count]; 
} 
$count++; 
} 
?> 

我不知道如何插入數據的

+0

你在尋找'implode()'嗎? – Barmar

+0

如果'from'和'two'總是分開49,爲什麼用戶需要輸入兩個數字?只需輸入第一個或最後一個數字,然後計算另一個數字。 – Barmar

+0

我有所有的連接和東西。我只是需要如何插入數據的幫助,我不認爲內爆將工作,我只是需要將數字序列插入數據庫與不同的主要ID每個 – user3282248

回答

1
$waybill = mysql_real_escape_string($_POST['waybill_booklet'][0]); 
$status = mysql_real_escape_string($_POST['status'][0]); 
foreach (range($from, $to) as $number) { 
    $sql = "INSERT INTO yourTable (id, waybill, status) VALUES($number, '$waybill', '$status')"); 
    mysql_query($sql) or die(mysql_error()); 
} 

你也應該切換到PDO或mysqli的,所以你可以用它代替代串到查詢參數化查詢。那麼你不需要逃避那樣的價值。

+0

通過查看這段代碼,我認爲這會使我找到正確的道路,謝謝barmar會測試一下,並接受答案,如果它解決了。 – user3282248

+0

mysql_real_escape_string()期望參數1是字符串,給定的數組給我$ waybill和$狀態 – user3282248

+0

看到我上面關於不需要括號這些輸入名稱後面的評論。 – Barmar

0

這裏是在PHP http://www.w3schools.com/php/php_mysql_insert.asp專門INSERT命令使用MySQL的教程。剛剛建立自己的數據到變量,而不是echo'ing它,然後跟着導遊與數據庫

這裏交互是自動遞增教程生成每個數組元素http://www.w3schools.com/sql/sql_autoincrement.asp

可以大大增加主IDS插入的速度和做一個提交通過構建一個多插入SQL字符串..然後使用上面的插入指南來運行它。

INSERT INTO Table (Column1, Column2) VALUES 
(Value1, Value2), (Value1, Value2) 
+0

@Barmar什麼..即時對不起,編輯 – clancer

+0

是的,我知道基本插入,但我怎麼可以插入變量$數字到數據庫$數字持有一系列數字 – user3282248

+0

@ user3282248在abisheks答案後澄清你可以做到這一點使用一個自動增量表很容易...只需插入,因爲你通常會將他們與外鍵關聯..主自動遞增鍵將保持他們所有單獨 – clancer

1

不是存儲這是一個數組(因爲要存儲此散裝,我認爲它不會涉及任何直接的數據庫級聚合或計算),你可以使用json_encode($myArray_series_of_numbers)它存儲爲一個JSON字符串。這使您可以靈活地將它們存儲爲字符串列,並且當您恢復它時,可以使用json_decode($model->series_of_numbers_column,true)將它作爲數組返回,以便在PHP中輕鬆計算。

希望這有助於

+0

我不會將它們作爲數組存儲在數據庫中,我只需要它們在數據庫中,每個數據庫都有不同的主ID,每個都不是數組 – user3282248

+0

您可以顯示它應該如何在數據庫中查看的例子。這可能有助於理解你在找什麼? –