gpt4 book ai didi

php - 无法在 mysql 表中插入 post 数组

转载 作者:行者123 更新时间:2023-11-29 06:50:30 25 4
gpt4 key购买 nike

我试图将一个包含 8 个字段的 POST 数组插入到一个 8 列的 mysql 表中,但是在提交表单时出现此错误:

Error: Column count doesn't match value count at row 1

当我搜索时,此错误提示传递的数据不适合数据库表的列数,但该表有 8 列。我做错了什么?

这是我的代码:

<html>
<body>
<form action="" method="post">

Nombre: <input type="text" name="data[]">
Apellido: <input type="text" name="data[]"></br>
Direccion: <input type="text" name="data[]"></br>
Telefono: <input type="text" name="data[]">
Telefono 2: <input type="text" name="data[]"></br>
Email: <input type="text" name="data[]"></br>
Edad: <input type="text" name="data[]"></br>
Foto: <input type="text" name="data[]">
<input type="submit">

</form>

<?php

$con=mysql_connect("localhost","root","");

if (!$con){ die('Could not connect: ' . mysql_error()); }


mysql_select_db("ag_online", $con);

foreach($_POST['data'] as $d ){
$sql = "INSERT INTO `contacts` VALUES ('', '".$d."');";
mysql_query( $sql );
}


if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";

mysql_close($con);

?>

</body>
</html>

最佳答案

如果表格有 8 列,则不能使用:

$sql = "INSERT INTO `contacts` VALUES ('', '".$d."');";

直接。

您必须指定要插入的列:

$sql = "INSERT INTO `contacts` (col1, col2) VALUES ('', '".$d."');";

更新
当你使用

foreach($_POST['data'] as $d ){
$sql = "INSERT INTO `contacts` VALUES ('', '".$d."');";
mysql_query( $sql );
}

和使用一样

foreach($_POST['data'] as $d ){
$sql = "INSERT INTO `contacts` (Nombre, Apellido, Direccion, Telefono, Telefono2, Email, Edad, Foto) VALUES ('', '".$d."');";
mysql_query( $sql );
}

正如您在评论中所说。

但是,当您在 $_POST['data'] 上循环时,它会变成如下内容:

第一个循环:

    $sql = "INSERT INTO `contacts` (Nombre, Apellido, Direccion, Telefono, Telefono2, Email, Edad, Foto)  VALUES ('', 'FIRST_VALUE');";

第一个循环:

    $sql = "INSERT INTO `contacts` (Nombre, Apellido, Direccion, Telefono, Telefono2, Email, Edad, Foto)  VALUES ('', 'SECOND_VALUE');";

也就是说,你会在说你会给出 8 之后尝试插入 2 个值。

您可以使用以下内容填充变量 $info,然后执行唯一的insert:

$info=implode(",", $_POST['data']);
$info="\"".implode("\",\"", $_POST['data'])."\""; //<--- updated answer, to have all items "wrapped"

然后

$sql = "INSERT INTO `contacts` (Nombre, Apellido, Direccion, Telefono, Telefono2, Email, Edad, Foto)  VALUES ('', $info);";

关于php - 无法在 mysql 表中插入 post 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15732916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com