mysql 的update 更新有的有反应,有的没反应是怎么回事?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 的update 更新有的有反应,有的没反应是怎么回事?相关的知识,希望对你有一定的参考价值。

在同一个程序里的
$aa="update card set money='$c' where name='$user'";
mysql_query($aa);
这个有反应
$up="UPDATE card set out='$out' where name='$user'";
Mysql_query($up);
这个没反应

而且用这种方法写的也没反应:
$up="UPDATE card set money='$c',out='$out' where name='$user'";
Mysql_query($up);

求为什么??

参考技术A 你的数据库服务器有问题本回答被提问者采纳 参考技术B 你的mysql不支持大写还是咋的,大写没反应 参考技术C 虽然不太了解php的写法但是sql执行会有返回值的吧,看看返回值,分析一下哪些有问题吧

如何知道 MySQL UPDATE 查询是不是因为提供的信息与数据库中已有的数据匹配而失败?

【中文标题】如何知道 MySQL UPDATE 查询是不是因为提供的信息与数据库中已有的数据匹配而失败?【英文标题】:How to know if a MySQL UPDATE query fails because information being supplied matches data already in the database?如何知道 MySQL UPDATE 查询是否因为提供的信息与数据库中已有的数据匹配而失败? 【发布时间】:2011-02-17 04:55:20 【问题描述】:

我有一个查询,用户在 textarea 字段中输入了一段文本。他们能够将这些信息保存在数据库中。问题是,如果他们没有更改信息,或者如果信息与数据库中已有的数据匹配,我会收到受影响行的“0”。通常我会显示一个错误,指出当没有受影响的行时查询失败。我如何“知道” 0 个受影响的行是因为数据已经存在,以便我可以显示更具体的错误?

【问题讨论】:

【参考方案1】:

由于查询成功,MySQL 不应返回任何错误号(如果返回则为 0)。在这种情况下,您可以检查受影响的行数是否为 0并且返回的错误号为 0。

如果你用 PHP 编码,你可以这样做:

// ... mysql_query() with the UPDATE query

if (mysql_affected_rows() == 0 && mysql_errno() == 0)

    // Data was not changed

【讨论】:

更新为现在使用“mysqli”,因为直接“mysql”已被折旧。【参考方案2】:

您会得到 0 个受影响的行的另一个原因是 UPDATE 语句不匹配任何行。例如:

UPDATE MyTable SET field = 'content' WHERE id = 1234;

如果不存在 id = 1234 的行,则给出 0 个受影响的行。这也不是错误,只是 UPDATE 碰巧没有匹配任何行。

检测这种情况的方法是使用SELECT来验证是否存在这样的一行。如果您可以确认该行存在,但UPDATE 表示它影响了 0 行,那么您就知道您尝试更改的值实际上是数据库中已经存在的行。

SELECT COUNT(*) FROM MyTable WHERE id = 1234;

但区别可能并不重要。如果@BoltClock 建议mysql_error() 说有一个错误,您可以报告错误。* 如果没有错误,您可以向用户报告“没有变化”。

* 注意:不必报告mysql_error()返回的文字消息。这些消息可能会让用户感到困惑,因此最好向他们报告一些更友好的消息。

【讨论】:

感谢您指出区别可能并不重要。我按照您的建议将其作为一般错误。【参考方案3】:

补充上面的答案。

$sth = $Param->dbh->prepare($sql);   
$rows_affected = $sth->execute()  
or die "SQL Error: $DBI::errstr\n";      
if ( $rows_affected eq '0E0' )     

【讨论】:

以上是关于mysql 的update 更新有的有反应,有的没反应是怎么回事?的主要内容,如果未能解决你的问题,请参考以下文章

Sql server中有没有replace语句? 没有的话,怎样实现类似于mySql中的repla

如何知道 MySQL UPDATE 查询是不是因为提供的信息与数据库中已有的数据匹配而失败?

如果我更新了一个反应模块,使得现有的代码功能但 Jest 快照测试可能会中断,那应该是主要版本的碰撞吗?

保存时需检查缓存中的数据在数据库中如果没有就就添加,有就更新,原来有而现在没有的就删除

php mysql 数据按月统计 没有的月份怎样补0

datagridview的单击事件