Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将数组发布到MySQL_Php_Mysql - Fatal编程技术网

Php 如何将数组发布到MySQL

Php 如何将数组发布到MySQL,php,mysql,Php,Mysql,我们如何将以下数组发布到mysql(列:id、日期、金额) 我们如何使用foreach从这个数组中获取数据(日期和金额)并发布到MySQL中 我们正在使用以下字段获取此数组 <input type="text" name="payment[date][]" /> <input type="text" name="payment[amount][]" /> <input type="text" name="payment[date][]" /> <inpu

我们如何将以下数组发布到mysql(列:id、日期、金额)

我们如何使用foreach从这个数组中获取数据(日期和金额)并发布到MySQL中

我们正在使用以下字段获取此数组

<input type="text" name="payment[date][]" /> <input type="text" name="payment[amount][]" />
<input type="text" name="payment[date][]" /> <input type="text" name="payment[amount][]" />


感谢您的支持。

循环第一个子阵列,并保留
$i
索引以访问第二个子阵列:

$stmt = $pdo->prepare("INSERT INTO things (date,amount) VALUES (?,?)");

foreach ($array["date"] as $i=>$_ignore)
{
    $stmt->execute( array($array["date"][$i], $array["amount"][$i]) );
}

循环第一个子阵列,并保持
$i
索引以访问第二个子阵列:

$stmt = $pdo->prepare("INSERT INTO things (date,amount) VALUES (?,?)");

foreach ($array["date"] as $i=>$_ignore)
{
    $stmt->execute( array($array["date"][$i], $array["amount"][$i]) );
}
编辑:哦,2D数组,不能用它

编辑:哦,2D数组,不能使用它。

试试这个:

<?php
$arr = $_POST['payment'];
$insert = array();
foreach($arr['date'] as $key => $date){
   $date = mysql_real_escape_string($date);
   $amount = (int)$arr['amount'][$key];
   $insert[] = "('$date', $amount)";
}

mysql_query("INSERT INTO table(date, amount) VALUES " 
    . implode(",", $insert));
试试这个:

<?php
$arr = $_POST['payment'];
$insert = array();
foreach($arr['date'] as $key => $date){
   $date = mysql_real_escape_string($date);
   $amount = (int)$arr['amount'][$key];
   $insert[] = "('$date', $amount)";
}

mysql_query("INSERT INTO table(date, amount) VALUES " 
    . implode(",", $insert));
这是一个mysqli版本(未经测试,我从未使用过mysqli,但我相信它应该可以工作)

这是一个mysqli版本(未经测试,我从未使用过mysqli,但我相信它应该可以工作)




你有一个2D数组,所以我假设你必须有一个double foreach循环。你已经掌握了多少知识?您是否已经在使用特定的MySQL扩展(
MySQL.*
mysqli.*
PDO
)了?或者这是一个完整的PHP/MySQL新手问题?@fireeyedboy是的,我可以使用mysqli,但我希望在将其发布到db之前在PHP中进行循环。@JCOC611:这没有必要。循环一个元素,同时检查另一个元素中是否存在相同的索引将很好。@fireeyedboy您可以发布代码吗?您有一个2D数组,所以我假设您必须有一个双foreach循环。您已经具备了什么知识水平?您是否已经在使用特定的MySQL扩展(
MySQL.*
mysqli.*
PDO
)了?或者这是一个完整的PHP/MySQL新手问题?@fireeyedboy是的,我可以使用mysqli,但我希望在将其发布到db之前在PHP中进行循环。@JCOC611:这没有必要。循环一个元素,同时检查另一个元素中是否存在相同的索引将很好。@fireyedboy您可以发布代码吗?为什么要使用内爆?在我的示例中,我们只想插入一个带有已发布数据的新行,因此每次mysql_查询执行都会插入多个(全部)值。如果count(array)=5,它将创建多少行,与$_POST['payment']['date']中的元素一样多。谢谢!你能帮我解决这个问题吗。。。stackoverflow.com/questions/5436726/adding-prefix-to-mysql-data,因为我在那里找不到正确的答案。为什么要使用内爆?在我的示例中,我们只想插入一个带有已发布数据的新行,因此每次mysql_查询执行都会插入多个(全部)值。如果count(array)=5,它将创建多少行,与$_POST['payment']['date']中的元素一样多。谢谢!你能帮我解决这个问题吗。。。stackoverflow.com/questions/5436726/adding-prefix-to-mysql-data,因为我在那里找不到正确的答案。如果数组中有5个计数,那么它会向mysql发送5行吗?是的,它会循环所有数组索引。@seoppc:你特别得到了mysql/mysqli的三个其他答案。也来看看。如果您想对提供的示例代码(在其他答案中)表示感谢,请使用向上投票箭头。@mario如果fireeyedboy发布的mysqli代码好用,您可以看一看它。@mario,我非常喜欢您的代码快速且小,如果您能用mysqli更新pdo,那将非常有帮助。谢谢,如果数组中的计数为5,那么它会向mysql发送5行吗?是的,它会在所有数组索引上循环。@seoppc:您还得到了mysql/mysqli的另外三个答案。也来看看。如果您想对提供的示例代码(在其他答案中)表示感谢,请使用向上投票箭头。@mario如果fireeyedboy发布的mysqli代码好用,您可以看一看它。@mario,我非常喜欢您的代码快速且小,如果您能用mysqli更新pdo,那将非常有帮助。谢谢,若数组计数等于5,它会在表中创建5行吗?我只是想更清楚地了解代码。thanks@seoppc:此代码将自动插入与示例数组大小相同的行。
foreach
循环遍历所有
$yourArray['date']
元素(并提取相应的
$yourArray['amount']
元素),并在每次迭代中执行查询。如果数组计数等于5,它会在表中创建5行吗?我只是想更清楚地了解代码。thanks@seoppc:此代码将自动插入与示例数组大小相同的行。
foreach
循环遍历所有
$yourray['date']
元素(并提取相应的
$yourray['amount']
元素),并在每次迭代时执行查询。
// the sql statement for the insert
$sql = 'INSERT INTO yourTable ( `id`, `date`, `amount` ) VALUES( null, ?, ? )';

// prepare the query for binding to the placeholders later on
$stmt = $mysqli->prepare( $sql );

// bind some variables to the placeholders
$stmt->bind_param( 'si', $date, $amount );

// loop through all date values
foreach( $yourArray[ 'date' ] as $key => $value ) )
{
    // check if there is an equivalent index in $yourArray[ 'amount' ]
    // change to isset if you want to guard againt null values
    if( !array_key_exists( $key, $yourArray[ 'amount' ] ) )
    {
        // throw an exception of perhaps use some other form of error
        throw new Exception( 'missing parameter' );
    }

    // give the previously bound variables values for this query execution
    $date = $yourArray[ 'date' ][ $key ];
    $amount = $yourArray[ 'amount' ][ $key ];

    // execute it!
    $stmt->execute();
}