gpt4 book ai didi

PHP 将数组保存到 SQL 问题

转载 作者:行者123 更新时间:2023-11-30 22:31:57 24 4
gpt4 key购买 nike

我反复使用一个表单和一个保存页面来将用户的答案保存到我的 sql 数据库中。最初我将答案保存到一个数组中,一旦达到目标,我就使用循环将数组的所有值传递到数据库,更新页面的代码如下所示:

unset($_SESSION['myanswers']);

$_SESSION['myanswers'] = array();
$_SESSION['myanswers']=array(
"File"=>$_POST['file'],
"Rating"=>$_POST['like'],
"Repetitions"=>$_SESSION['reps'],
"degradation"=>$_POST['degradation']
);


$f1=$_SESSION['myanswers']['File'];
$r1=$_SESSION['myanswers']['Rating'];
$r2=$_SESSION['myanswers']['Repetitions'];
$the_id=$_SESSION['user_id'];
$the_deg=$_SESSION['myanswers']['degradation'];


array_push($_SESSION['answers'], $_SESSION['myanswers']);
if($_SESSION['counter']==goal){

require 'connect.php';

foreach( $_SESSION['answers'] as $key => $obj)
{



$f1=$obj['File'];
$r1=$obj['Rating'];
$r2=$obj['Repetitions'];
$the_id=$_SESSION['user_id'];
$the_deg=$obj['degradation'];

$sql = "INSERT INTO `array`(`id`, `file`, `rating`, `repetitions`, `degredation`) VALUES ('$the_id', '$f1', '$r1', '$r2', '$the_deg')";
mysql_query($sql);



}

header("Location: MyEndPage");
die();
}else{
header("Location: MyFormPage");
die();
}

此代码运行良好,但我需要立即保存所有答案,而不是在达到目标时保存。所以我将代码更改为以下内容:

unset($_SESSION['myanswers']);

$_SESSION['myanswers'] = array();
$_SESSION['myanswers']=array(
"File"=>$_POST['file'],
"Rating"=>$_POST['like'],
"Repetitions"=>$_SESSION['reps'],
"degradation"=>$_POST['degradation']
);


$f1=$_SESSION['myanswers']['File'];
$r1=$_SESSION['myanswers']['Rating'];
$r2=$_SESSION['myanswers']['Repetitions'];
$the_id=$_SESSION['user_id'];
$the_deg=$_SESSION['myanswers']['degradation'];


require 'connect.php';
$sql = "INSERT INTO `array`(`id`, `file`, `rating`, `repetitions`, `degredation`) VALUES ('$the_id', '$f1', '$r1', '$r2', '$the_deg')";
mysql_query($sql);





if($_SESSION['counter']==goal){
header("Location: MyEndPage");
die();
}else{
header("Location: MyFormPage");
die();
}

这是问题出现的时候,新条目总是保存在旧数据和新数据之间的同一位置。例如,如果在更改之前我保存了 5 个条目,它们在 sql 数组中的顺序将如下所示:

1,名称1,数据1
2、名称2、数据2
3、name3、data3
4、名称4、数据4
5、名称5、数据5

使用新代码重复添加新条目是有问题的,例如我们添加条目 6、7、8,它们是这样添加的:

1,名称 1,数据 1 | 1、名称 1、数据 1 | 1、名称1、数据1
2、名称 2、数据 2 | 2、名称 2、数据 2 | 2、名称2、数据2
3、名称 3、数据 3 | 3、名称 3、数据 3 | 3、name3、data3
4、名称4、数据4 | 4、名称4、数据4 | 4、名称4、数据4
5、名称 5、数据 6 | 5、名称 5、数据 6 | 5、名称5、数据6
6、名称6、数据5 | 7、名称 7、数据 7 | 8、名称8、数据8
---------------------- | 6、名称6、数据6 | 7、名称7、数据5
---------------------- | ---------------------- | 6、name6、data6

由于某种原因,insert into 没有进入 sql 数组的末尾,而是堆栈在使用旧代码收集的数据的末尾。我尝试对代码进行一些调整,但没有任何效果。

最佳答案

数据库不一定在表的末尾存储新记录。他们还可以重用先前删除释放的空间。

此外,无论出于何种原因,顺序看起来都是随机的。特别是当您过滤(where 子句)或连接其他表时,顺序可能会受到影响,因为 MySQL 使用特定的索引来过滤或连接,并且通常会按该顺序返回实际数据。

无论是什么原因,如果您查询数据,您可能会以任意随机顺序获取该数据。如果您需要特定顺序的信息,请在查询中添加 ORDER BY 子句来强制执行该顺序。

关于PHP 将数组保存到 SQL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33651903/

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