gpt4 book ai didi

php - 防止Form多次向数据库插入数据

转载 作者:行者123 更新时间:2023-11-29 11:02:26 25 4
gpt4 key购买 nike

尝试将表单数据插入 mysql 数据库,我的问题是当用户提交表单时,数据被插入数据库两次。我知道当我删除整个 if 循环 if(mysqli_query($dbc, $query_info) 时,我的第二个查询 $query_file = "INSERT INTO upperbit_files... 语句做错了)){...} 表单按预期提交一次。

基本上我需要将数据插入到两个表中。一个用于一般产品信息,另一个用于存储与该产品相关的照片,这两个表都通过全局变量 $advert_id 连接。我正在使用 2 个单独的查询

  1. 表 1:advert_sell_category1,用于一般产品信息
  2. 表2:upperbit_files,用于存储上传图片的详细信息

但由于某种原因,与一般产品信息相关的第一个查询被插入数据库两次,讽刺的是两次 $advert_id 都是相同的。下面是我的代码和数据库截图供您理解,

enter image description here

    if(isset($_POST['postad'])){

$adtype = $_POST['offering_type'];
$manufacturer = mysqli_real_escape_string($dbc, $_POST['manufaturer']);
$mediafile = mysqli_real_escape_string($dbc,$_POST['mediafile']);

$GLOBALS['advrt_post_id'] = crypto_rand_secure(10, 100000);
$query_info = "INSERT INTO advert_sell_category1(advert_id,manufacturer,image_file)
VALUES('$advrt_post_id','$manufacturer','$mediafile')";
$result = mysqli_query($dbc, $query_info) or die(mysqli_error($dbc));

if(mysqli_query($dbc, $query_info)){
$last_id = mysqli_insert_id($dbc);
$query_link_id = "SELECT advert_id FROM advert_sell_category1 WHERE id = '$last_id' ";
$result_id = mysqli_query($dbc, $query_link_id);

while ($row = mysqli_fetch_assoc($result_id)) {
$link_id = $row['advert_id'];

if(!empty($mediafile)){
$media_file = explode(",", mysqli_real_escape_string($dbc,$_POST['mediafile']));
$media_file = array_filter($media_file);
$media_file_size = explode(",", mysqli_real_escape_string($dbc,$_POST['mediafilesize']));
$media_file_size = array_filter($media_file_size);
$media_file_type = explode(",", mysqli_real_escape_string($dbc,$_POST['mediafiletype']));
$media_file_type = array_filter($media_file_type);
for ($var = 0; $var < sizeof($media_file); $var++){
$query_file = "INSERT INTO upperbit_files(file,size,type,link_id) VALUES ('$media_file[$var]','$media_file_size[$var]','$media_file_type[$var]','$link_id')";
$result_file = mysqli_query($dbc, $query_file) or die(mysqli_error($dbc));
}
}
}
}

最佳答案

/********** Your Code ************/
$result = mysqli_query($dbc, $query_info) or die(mysqli_error($dbc));

if(mysqli_query($dbc, $query_info)){
/**********************/

请参阅此处的 if 语句,您第二次调用mysqli_query(),因此相同的数据会插入两次。使用下面的代码来解决您的问题

/********** Suggested Code ************/
$result = mysqli_query($dbc, $query_info) or die(mysqli_error($dbc));

if(mysqli_affected_rows()>0){
/**********************/

关于php - 防止Form多次向数据库插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41988754/

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