【问题标题】:send array[] from php to mysql将数组 [] 从 php 发送到 mysql
【发布时间】:2014-04-09 11:49:10
【问题描述】:

我正在做一个项目,但首先我要了解一件事。

我有 2 个输入类型的文本字段,其中 name="firstname[]" 作为数组(在示例中我没有使用 jquery,但它将使用它动态生成)并且无法将其添加到 mysql。

这是我所拥有的:index.php

<html>
<body>

<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname[]"> <br>
Firstname 2: <input type="text" name="firstname[]">
<input type="submit">
</form>

</body>
</html>

插入.php

<?php
$con=mysqli_connect("localhost","inputmultiplicad","inputmultiplicado","inputmultiplicado");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }




$sql="INSERT INTO input_field (firstname)
VALUES
('$_POST[firstname]')";

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

mysqli_close($con);
?>

问题是:如何将 firstname[] 数组发送到 mysql 数据库?

感谢您的宝贵时间

【问题讨论】:

标签: php mysql arrays send


【解决方案1】:

以下应该生成您需要的 SQL 语句。不过,请记住在将 mysql_escape_string 放入数据库之前使用它!或者更好的是,使用 PDO 并绑定值。 :)

$values = array();
$sql = "INSERT INTO table (firstname) VALUES ";
foreach ($_POST['firstname'] as $name) {
    $values[] = "('".mysql_real_escape_string($name)."')";
}
$sql .= implode(",", $values);

【讨论】:

  • 这不会修剪尾随逗号并使用错误的转义函数。
  • 我收到此错误错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 1 行的 '{firstname} VALUES ('Name 1'),('Name 2')' 附近使用,我正在使用 MAMP 2
  • 感谢您指出错字,Dan。 :) 但是,没有尾随逗号。 implode 函数会处理这个问题。
  • 对不起,格班姆。名字周围应该有基本的括号。
【解决方案2】:

这应该可行:

//Escape user input
$names = array_map('mysql_real_escape_string', $_POST[firstname]);

//Convert array to comma-delimited list
$names = rtrim(implode(',', $names), ',');

//Build query
$sql="INSERT INTO input_field (firstname) VALUES ('$names')";

注意:一般来说,使用参数化查询比使用mysql_real_escape_string() 更好,但后者比完全不转义要安全得多。

【讨论】:

  • 您好,感谢您的回复,但无法正常工作,数据库为空
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 2012-12-14
  • 2017-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多