Php 使用pdo的foreach循环多数组值更新
这里,Php 使用pdo的foreach循环多数组值更新,php,arrays,pdo,Php,Arrays,Pdo,这里,$roll是数组值,$score也是数组值。在这里 例如,所有卷号的上次值更新 $roll=1,2,3,4和$score(10,20,30)我不知道,但这里是所有卷号的30值更新。 请帮帮我。。谢谢..目前,您正在保存所有卷的每个分数,因此最后一个分数将始终设置为您的卷 错误在于您使用了两个foreach循环,但您只需要一个,您只需要将掷骰和分数彼此匹配 如果您完全确定数组的长度相同并且索引方式相同(具有相同的键-您可以使用PHP函数来确保),则可以使用for循环 <?php $ro
$roll
是数组值,$score
也是数组值。在这里
例如,所有卷号的上次值更新
$roll=1,2,3,4
和$score(10,20,30)
我不知道,但这里是所有卷号的30值更新。
请帮帮我。。谢谢..目前,您正在保存所有卷的每个分数,因此最后一个分数将始终设置为您的卷 错误在于您使用了两个foreach循环,但您只需要一个,您只需要将掷骰和分数彼此匹配 如果您完全确定数组的长度相同并且索引方式相同(具有相同的键-您可以使用PHP函数来确保),则可以使用for循环
<?php
$roll = $_POST['roll'];
$score = $_POST['a'];
$test = $_SESSION['test'];
$class = $_SESSION['class'];
print_r($roll);
print_r($score);
global $pdo;
require('connect.php');
$stmt=$pdo->prepare("update atten set $test=? where roll=?");
foreach( $roll as $rollno)
{
$stmt->bindparam(2,$rollno);
foreach( $score as $key)
{
$stmt->bindparam(1,$score);
$stmt->execute();
}
}
if($stmt==false)
{
die("error".print_r($stmt->errorinfo()));
}
?>
然后像往常一样使用foreach循环
编辑:根据请求,一个数组\u组合示例:
array_combine($roll, $score);
您正在传递内部循环绑定参数
$stmt->bindparam(1,$score)中的$array
代码>
我想
<?php
$roll = $_POST['roll'];
$score = $_POST['a'];
$test = $_SESSION['test'];
$class = $_SESSION['class'];
print_r($roll);
print_r($score);
global $pdo;
require('connect.php');
$stmt=$pdo->prepare("update atten set $test=? where roll=?");
if(count($roll) !== count($score))
die('Arrays are not the same length!');
$rollsToScores = array_combine($roll, $score);
foreach($rollsToScores as $roll => $score){
$result = $stmt->execute(array($score, $roll));
if($result === false){
die("error".print_r($stmt->errorinfo()));
break;
}
}
?>
应为:-
$stmt->bindparam(1,$score);
修改的代码块:-
$stmt->bindparam(1,$key);
你把你的global$pdo代码>超出数据库连接的范围。然而,不建议使用这种方法。您的会话_start()在哪里代码>?另外,这是错误的$stmt->bindparam(2,$rollno)代码>你能解释一下代码的例子吗?如果我在这里为用户循环无值更新到数据库,那么我有点搞不清楚这里到底发生了什么。您应该尝试进行一些调试,然后var_dump到底绑定了什么,这将帮助您了解到底发生了什么。您可以在这里解释array_combine()示例吗
$stmt->bindparam(1,$key);
foreach( $roll as $rollno)
{
$stmt->bindparam(2,$rollno);
foreach( $score as $key)
{
$stmt->bindparam(1,$key);
$stmt->execute();
}
}