PHP 更新:检查 serialnr 是不是已存在于数据库中返回 Yes > Can't update

Posted

技术标签:

【中文标题】PHP 更新:检查 serialnr 是不是已存在于数据库中返回 Yes > Can\'t update【英文标题】:PHP Update: check if serialnr already exists in database returns Yes > Can't updatePHP 更新:检查 serialnr 是否已存在于数据库中返回 Yes > Can't update 【发布时间】:2012-10-22 14:23:03 【问题描述】:

我刚刚编写了这段代码,直到我意识到如果不将 serialnr 更改为不存在的内容,我将无法更新字段。

if (isset($_POST['update']))

    $errormsg = "";
    $errorcontrol = "
                SELECT serialnr
                FROM item
                WHERE serialnr='$_POST[serialnr]'
                ";
    $result=mysql_query($errorcontrol);
    if (mysql_num_rows($result) == 1)
    
        $errormsg= "<p id='notification'>Duplicate entry set.</p>";
    
    else
    
        $UpdateQuery = "
                    UPDATE item SET 
                    itembrand='$_POST[itembrand]', serialnr='$_POST[serialnr]', itemname='$_POST[itemname]', itemgroupid='$_POST[itemgroupid]', addinfo='$_POST[addinfo]'
                    WHERE itemid='$_POST[itemid]'
                    ";
        mysql_query ($UpdateQuery)  ;
    

如果我将此代码用于“添加新”部分,它会正常工作:当它已经存在时不要添加。

但是当 serialnr 已经存在时,我该如何更新呢?

【问题讨论】:

请使用搜索。你不是第一个遇到这个问题的人。谢谢! 【参考方案1】:

下面几行的语法必须是,你错过了$_POST 键中的引号,

 1.    $errorcontrol = "
            SELECT serialnr
            FROM item
            WHERE serialnr='$_POST['serialnr']'
            ";



2.     $UpdateQuery = "
                UPDATE item SET 
                itembrand='$_POST['itembrand']', serialnr='$_POST'[serialnr']', itemname='$_POST[itemname]', itemgroupid='$_POST['itemgroupid']', addinfo='$_POST['addinfo']'
                WHERE itemid='$_POST['itemid']'

【讨论】:

设置引号后出现错误。我的 php 想要它没有引号。也许版本差异?无论如何,查询正在工作。我只需要另一种方法来检查是否存在。不是检查它是否已经存在,而是检查它在更新后是否会存在两次或类似的东西。这样,它允许我更新未触及的序列号的信息。有什么想法吗? item的主键是什么? oohk,有什么理由要更新记录,然后检查serialnr 是否已经存在两次,而不是只检查是否存在,如果不存在则更新? 原因,这会导致不必要的(额外)查询。阻塞数据库不是一个好习惯。 因为例如我有 serialnr: 100, itembrand: Canon 并且当我将 itembrand 更新为 Canon2 并将 serialnr 保持在 100 时,它不允许更新,因为 serialnr 100 已经存在。这就是为什么我采取其他方式。

以上是关于PHP 更新:检查 serialnr 是不是已存在于数据库中返回 Yes > Can't update的主要内容,如果未能解决你的问题,请参考以下文章

如何在更新期间检查该数据是不是已存在于数据库中(Mongoose And Express)

PHP在更新SQL表之前检查文件是不是存在

使用 MySQLi 检查用户名是不是已存在

使用 PHP 检查用户名和电子邮件是不是已经存在 [重复]

在 MSSQL 中更新之前检查是不是存在唯一值

检查文件在php中是不是存在正则表达式[重复]