Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
区分“未受影响的行”和成功更新的行——相同的值(MySQL和PHP)_Php_Mysql_Pdo_On Duplicate Key_Rows Affected - Fatal编程技术网

区分“未受影响的行”和成功更新的行——相同的值(MySQL和PHP)

区分“未受影响的行”和成功更新的行——相同的值(MySQL和PHP),php,mysql,pdo,on-duplicate-key,rows-affected,Php,Mysql,Pdo,On Duplicate Key,Rows Affected,我正在从PHP执行SQLMySQL命令。每次执行都有几种可能的结果: 记录更新为新值 记录已更新,但值恰好相同 记录找不到要更新的行,即没有与WHERE子句匹配的行 我想知道如何区分的1和3:这两种情况都返回零作为受影响的行数,因此: $result = $db->exec($statement) 在这两种情况下都将有$result==0。我怎样才能分辨出区别呢 编辑:我的意思是问如何区分场景2和场景3,而不是场景1和场景3!很抱歉给您带来不便…一个简单的解决方案是两个查询 首先,运行S

我正在从PHP执行SQLMySQL命令。每次执行都有几种可能的结果:

记录更新为新值 记录已更新,但值恰好相同 记录找不到要更新的行,即没有与WHERE子句匹配的行 我想知道如何区分的1和3:这两种情况都返回零作为受影响的行数,因此:

$result = $db->exec($statement)
在这两种情况下都将有$result==0。我怎样才能分辨出区别呢


编辑:我的意思是问如何区分场景2和场景3,而不是场景1和场景3!很抱歉给您带来不便…

一个简单的解决方案是两个查询

首先,运行SELECT查询,使用mysqli\u num\u行检查行是否存在

然后,如果行存在,您可以运行更新查询并使用mysqli\u受影响的行

[编辑]

…我会为任何想打一个电话的人推荐一个可能的替代方案。我不知道你是否有兴趣做任何插入,或纯粹的更新。以下是一些值得思考的问题:

从顶部评论@:

在INSERT INTO On REPLICATE KEY UPDATE查询中,虽然成功查询时受影响的_行每行仅返回0或1,但实际上可能返回2

从Mysql手册:对于重复键更新,如果行作为新行插入,则每行受影响的行值为1,如果更新现有行,则每行受影响的行值为2

见:

以下是每行的汇总明细:

+0:可能没有更新或插入行,因为该行已存在,但在更新过程中没有实际更改字段值

+1:插入了一行

+2:更新了一行


你能让它满足你的需要吗?

使用PDO?退房MySQLi?除了@JayBlanchard之外,正如作者所说,他正在使用mysql,所以也会这样做。mysql_*函数被弃用@Danny,并且永远不会收到我的推荐。OP发布的代码表明他们可能使用的不是旧的MySQL API。仔细阅读,OP声明使用MySQL作为数据库,而不是MySQL作为API。¯\_ツ_/“好吧,我半同意你的看法,但正如OP在标题+标记的mysql上提到的,所以我给了他最后一块你不喜欢的蛋糕:编辑:我认为我可以通过执行SQL mysql命令来理解它”_ツ_/''我可以从PHP以任意多种方式执行MySQL命令@Danny,说明这不会告诉您我使用的是哪种API。你会注意到我以提问的形式发表了我的评论,然后OP就消失了。@mickmackusa-我想是吧。我有点希望有一种方法可以通过检查返回值使其工作,这样我就不必打两个电话了……而且,我没有使用mysqli,但这不是一个大问题deal@Jo.P打两个电话会特别麻烦吗@米克麦克美国哈哈!我会看看我是否能与其他想法合作…这当然是非常有趣的!如果没有,我可能会打两个电话……嘘…。