du42561 2012-07-10 15:36
浏览 54
已采纳

在重复键更新时插入返回值0

I am creating a web page where you can edit local listing sites for clients. I am using the INSERT ... ON DUPLICATE KEY UPDATE syntax in mysql and php. Below is the code:

edit-listings-exec.php

<?
    //Array to store validation errors
    $errmsg_arr = array();

    //Validation error flag
    $errflag = false;

    $member_id = $_SESSION['MEMBER_ID'];
    $userresult = mysqli_query($link, "SELECT   username 
                                    FROM        members 
                                    WHERE       member_id = '$member_id'");
    $row = mysqli_fetch_array($userresult);
    $username = $row['username'];


    //run a for loop to check for duplicates
    for ($i=1; $i < 10; $i++) {
        $selectbox = $_POST['listing'.$i];

        for ($j=1; $j < 10; $j++) {
            if ($j != $i) {
                if ($_POST['listing'.$j] === $selectbox && $_POST['listing'.$j] != "") {
                $errmsg_arr[] = "Duplicate listing source '$selectbox'";
                $errflag = true;
                break;
                }
            }
        }
    }

    //if there are input validations redirect back to main page
    if($errflag) {
        $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
        session_write_close();
        header("location: edit-listings.php");
        exit();
    }

    //run loop to define post variables
    for ($k=1; $k < 10; $k++) {
        ${'listing'.$k} = mysqli_real_escape_string($link, $_POST['listing'.$k]);
        ${'listing'.$k.'_site'} = mysqli_real_escape_string($link, $_POST['listing'.$k.'_site']);
    }


    //insert listings into local_listings table for the user
    $qry = "INSERT INTO local_listings (
                        member_id,
                        username,
                        listing1,
                        listing1_site,
                        listing2,
                        listing2_site,
                        listing3,
                        listing3_site,
                        listing4,
                        listing4_site,
                        listing5,
                        listing5_site,
                        listing6,
                        listing6_site,
                        listing7,
                        listing7_site,
                        listing8,
                        listing8_site,
                        listing9,
                        listing9_site)
                VALUES (
                        '$member_id',
                        '$username',
                        '$listing1',
                        '$listing1_site',
                        '$listing2',
                        '$listing2_site',
                        '$listing3',
                        '$listing3_site',
                        '$listing4',
                        '$listing4_site',
                        '$listing5',
                        '$listing5_site',
                        '$listing6',
                        '$listing6_site',
                        '$listing7',
                        '$listing7_site',
                        '$listing8',
                        '$listing8_site',
                        '$listing9',
                        '$listing9_site')
                ON DUPLICATE KEY UPDATE
                        listing1        =   '$listing1',
                        listing1_site   =   '$listing1_site',
                        listing2        =   '$listing2',
                        listing2_site   =   '$listing2_site',
                        listing3        =   '$listing3',
                        listing3_site   =   '$listing3_site',
                        listing4        =   '$listing4',
                        listing4_site   =   '$listing4_site',
                        listing5        =   '$listing5',
                        listing5_site   =   '$listing5_site',
                        listing6        =   '$listing6',
                        listing6_site   =   '$listing6_site',
                        listing7        =   '$listing7',
                        listing7_site   =   '$listing7_site',
                        listing8        =   '$listing8',
                        listing8_site   =   '$listing8_site',
                        listing9        =   '$listing9',
                        listing9_site   =   '$listing9_site'";

    $result = mysqli_query($link, $qry);

    if (mysqli_affected_rows($result) < 1) {
        $errmsg_arr[] = "Unable to insert listings for $username";
        $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
        header ("location: edit-listings.php");
    }
    elseif (mysqli_affected_rows($result) === 1) {
        $_SESSION['RESULT'] = "New listings for '$username' inserted successfully";
        header ("location: edit-listings-success.php");
    }
    elseif (mysqli_affected_rows($result) === 2) {
        $_SESSION['RESULT'] = "Listings for '$username' have been updated";
        header ("location: edit-listings-success.php");
    }


?>

The data is successfully inserting into the local_listings table but mysqli_affected_rows always returns a value of 0. It should be returning a value of 1 if it inserts a new row or 2 if it simply updates. Any ideas why this is happening?

  • 写回答

1条回答 默认 最新

  • dousui8263 2012-07-10 17:08
    关注

    Try this:

        if (mysqli_affected_rows($link) < 1) {
    ... your code
    }
    

    take a look here

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥50 我撰写的python爬虫爬不了 要爬的网址有反爬机制
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等