(菲律宾比索)插入的数据在MySQL中显示为“数组”


(PHP) Inserted data appears in MySQL as "Array"

Website.

这感觉像是一个常见问题,但谷歌却很难!

如代码中的注释中所述,插入值以前不是问题,但是当我在其下方添加其他INSERT查询时,该值停止工作。

$user = $_POST['name'];
$night = $_POST['club'];
$query = mysql_query("SELECT day FROM nights WHERE name = '$night'");
$email = $_POST['email'];
while ($row = mysql_fetch_assoc($query)) {
    $date = getFullDateString($row['day']);
    $date2 = getDateString($row['day']);
}
// this one previously worked but now enters into the database with $user as "Array"
mysql_query("INSERT INTO guestlists (guest, night, date) VALUES('$user', '$night', '$date') ") or die(mysql_error());
$guest1 = $_POST['name1'];
$guest2 = $_POST['name2'];
// these were added later and work fine but seem to have had an effect on the query above
mysql_query("INSERT INTO guestlists (guest, night, date) VALUES('$guest1', '$night', '$date') ") or die(mysql_error());
mysql_query("INSERT INTO guestlists (guest, night, date) VALUES('$guest2', '$night', '$date') ") or die(mysql_error());
foreach ($_POST as $key){
    if (is_array($key)){
        foreach ($key as $key2 => $value){
            mysql_query("INSERT INTO guestlists (guest, night, date) VALUES('$value', '$night', '$date') ") or die(mysql_error());
        }
    }
}

您应该将客户机 HTML 输入重命名为 guests[],而不是再次使用 name。您有命名冲突。

你需要在你的javascript代码中修复这个问题:

var name = $("<p><input class='input' type='text' name='guests[]' value='' /></p>");

在您的 HTML 代码中:

<input class="input" type="text" name="guests[]" />

之后,您的 PHP 代码应将来宾变量处理为数组:

$guests = $_POST['guests'];
foreach ($guests as $guest)
{
    mysql_query("INSERT INTO guestlists (guest, night, date) VALUES('$guest', '$night', '$date') ") 
    or die(mysql_error());
}

请注意,您不需要去guests[1]guests[2]guests[3]等。

您的网站

中,您有:

<input class='input' type='text' name='name["+currentArrayNum+"]' value='' />

以生成表单。name[...]参数在 php 中最终显示为$_POST['name']这将是一个数组。如果强制将其为字符串,则该字符串将Array 。因此,请拿起您的$user并使用foreach对其进行迭代,以处理每个名称。

另外,请阅读sql注入!

你的页面上有一些Javascript插入了如下所示的表单字段:

<input class="input" type="text" name="name[5]" value="">

name="name[5]"部分是导致您在这里出现问题的原因 - 它在提交时$_POST['name']变成一个数组。您需要重构该代码。