php - 如何使用PHP将多个数组插入数据库

标签 php mysql arrays

我需要帮助。我们的 php 代码似乎有什么问题?我们似乎无法将我们的数据插入到我们的数据库中。我只是一个初学者,我的任务是将多个数据存储到多个数组中到我们的数据库中。我们实际做的是输入一个数字(例如:5),该页面中应显示 5 个表格。每份表格都包括姓名地址和电话号码。之后我们将其提交到我们的数据库。我们已经控制了很多表单来显示,但是我们无法存储插入的数据。任何人都可以帮助我们吗?谢谢。

表单.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>

输入.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());
} 


?>

最佳答案

我已经修改了您的代码以使其工作:

表单.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());
}

?>

它工作正常。我刚刚在我的本地机器上对其进行了测试。

编辑(评论):

  1. 在 input.php 中使用变量 $queue_num 是没有意义的,因为这个变量只在 form.php 脚本中可用('wow' input placed in another form, which is submitted to file form.php, not input .php)。所以 if (count($sql_array) >= $queue_num) block 工作错误;

  2. 检查数据库连接的配置设置(正如我在评论中所写,您必须使用名称“localhost”定义常量或用引号将 localhost 一词括起来);

  3. 我修改了你的表单,因为它的结构有误;

  4. 我不明白在 form.php 中创建第一个表单的目的。

您可以修改此代码以使其更适合您的情况。但首先尝试使用这个。

注意。使用var_dump()函数在调试期间查看 $_POST 数组以了解哪些变量可用。

关于php - 如何使用PHP将多个数组插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1899418/

相关文章:

arrays - 传递字符串数组和foreach循环不起作用:没有数组,只有一个字符串?

php - wordpress永久链接重新加载页面而不是重定向到帖子

php - 我有错误 : SQLSTATE[HY000] [2005] Unknown MySQL server host

java - 从 Android (WiFi/GPRS) 执行 PHP 脚本的显着运行时差异

php - 如何在 macOS big Sur 上使用 MAMP PHP

php - Flexslider 与 php 多个视频

mysql - 运行personal.xlsb宏而不打开excel

php - 1045 MySQL 错误 当它应该工作时

python - 在 numpy 中 reshape ndarray 与常规数组?

javascript - 如果对象值为 true 并且键在数组中,则获取对象键。 JavaScript