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的主要内容,如果未能解决你的问题,请参考以下文章