2009-12-14 58 views
1

我需要幫助。什麼似乎是我們的PHP代碼的問題?我們似乎無法將我們的數據插入到我們的數據庫中。我只是一個初學者,我的任務是將多個數據存儲到我們的數據庫中的多個數組中。我們實際上做的是輸入一個數字(例如:5),並在該頁面中顯示5個表單。每個表格都由名字地址和電話號碼組成。之後我們將它提交給我們的數據庫。我們已經控制了很多表單來顯示,但我們無法存儲插入的數據。任何人都可以幫助我們嗎?謝謝。如何使用PHP將多個數組插入到數據庫中

form.php的

<form method="POST" action="form.php"> 
<input type="text" name="waw" /> 
<input type="submit" /> 

<?php 
$i=0; 

while ($i<$_POST['waw']) 
{ 
?> 
</form> 

<form method="POST" action="input.php"> 
<!-- Person #1 --> 

<input type="text" name="username[]" /> 

<input type="text" name="phonenum[]" /> 

<input type="text" name="add[]" /> 


<?php 
$i++; 
} 
?> 
<input type="submit" /> 
</form> 

input.php

<?php 

$username="maizakath"; 
$password="12345"; 
$database="tryinsert"; 
mysql_connect(localhost,$username,$password); 
@mysql_select_db($database) or die("<b>Unable to specified database</b>"); 



$sql_start = 'INSERT INTO `mytable` VALUES '; 
$sql_array = array(); 
$queue_num = $_POST['waw']; 
foreach ($_POST['username'] as $row=>$name) 
{ 
$username = $name; 
$phonenum = $_POST['phonenum'][$row]; 
$add = $_POST['add'][$row]; 
$sql_array[] = '(' . $username . ', ' . $phonenum . ', ' . $add . ')'; 
if (count($sql_array) >= $queue_num) 
{ 
mysql_query($sql_start . implode(', ', $sql_array)); 
$sql_array = array(); 
} 
} 
if (count($sql_array) > 0) 
{ 
mysql_query($sql_start . implode(', ', $sql_array))or die(mysql_error()); 
} 


?> 
+0

請您重新格式化您的代碼,使其可讀?取每行代碼並在前面加上四個空格,以便網站將其格式化爲預格式。我沒有足夠的聲望來自己編輯帖子。 \ c: – Dathan 2009-12-14 07:19:01

+0

@Dathan:我重新格式化了代碼。 – Asaph 2009-12-14 07:20:53

+1

完成,謝謝。初學者在這裏。謝謝 – kath 2009-12-14 07:20:58

回答

3

我修改代碼,使其工作:

form.php的

<form method="POST" action="form.php"> 
<input type="text" name="waw" /> 
<input type="submit" /> 
</form> 

<form method="POST" action="input.php"> 
<?php 
$i=0; 

while ($i<$_GET['waw']) 
{ 
?> 

<!-- Person #1 --> 

<input type="text" name="username[]" /> 

<input type="text" name="phonenum[]" /> 

<input type="text" name="add[]" /><br /> 


<?php 
$i++; 
} 
?> 
<input type="submit" /> 
</form> 

輸入.php

<?php 


$username="maizakath"; 
$password="12345"; 
$database="tryinsert"; 
mysql_connect('localhost',$username,$password); 
@mysql_select_db($database) or die("<b>Unable to specified database</b>"); 



$sql_start = 'INSERT INTO `mytable` VALUES '; 
$sql_array = array(); 
$queue_num = $_POST['waw']; 
foreach ($_POST['username'] as $row=>$name) 
{ 
$username = $name; 
$phonenum = $_POST['phonenum'][$row]; 
$add = $_POST['add'][$row]; 
$sql_array[] = '("' . $username . '", "'.$phonenum.'", "'.$add.'")'; 
if (count($sql_array) >= $queue_num) { 
    $query_single=$sql_start . implode(', ', $sql_array); 
    mysql_query($query_single); 
    $sql_array = array(); 
} 
} 

if (count($sql_array) > 0) { 
    $query = $sql_start . implode(', ', $sql_array); 
    mysql_query($query)or die(mysql_error()); 
} 

?> 

它工作正常。我剛剛在本地機器上測試過它。

EDIT(評論):在input.php變量$ queue_num的

  1. 用法是毫無意義的,因爲這個變量僅在form.php的腳本是可用的( '哇' 輸入放置在另一種形式,這是提交到文件form.php,而不是input.php)。所以if (count($sql_array) >= $queue_num)塊的工作不對; (如我在評論中寫的,你必須用名字'localhost'定義常量或用引號括住word localhost);

  2. 我修改了你的表單,因爲它有錯誤的結構;

  3. 我不明白在form.php中創建第一個表單的目的。

您可以修改此代碼以使其更適合您的情況。但是所有人都試圖使用這個。

注意。使用var_dump()函數可以在調試過程中看到$ _POST數組,以瞭解哪些變量可用。

+0

非常感謝。你是對的。並感謝解釋如何不需要一些代碼。再次感謝你! – kath 2009-12-14 09:43:25

0

我不確定是否有意義在一個頁面上有多個表單。

編輯:刪除的代碼,亞歷克斯的答案似乎對我來說。

0

我已經嘗試過它的工作正常,但是當插入到數據庫中時,如果用戶沒有填滿整個字段,它也會插入空值。

0

我已經將兩個數組同時存儲在一個表中。希望這會幫助你。

<?php 
    $i = 0; 
    foreach($element_name as $element_names){ 
     $element_value = $_POST['element_value']; 
     $element_names_insert = mysql_query("insert into wp_remote_fields 
     set 
      remote_fields = '".$element_names."', 
      remote_values = '".$element_value[$i]."' 
      ");  
     $i++;   
    } 
?> 
相關問題