2009-12-14 44 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++;   
    } 
?> 
相关问题