2010-08-15 67 views
3

我是新来的php和sql。我有一张三列的桌子。一个256位散列号和两个整数。我想搜索匹配我的散列的行,然后检索一个int并增加另一个。所以,我想我会先用UPDATE命令杀死两只鸟。如何在php和mysql中执行UPDATE命令后检索列

$query = sprintf("UPDATE %s SET activationcount = (activationcount+1) WHERE hash='%s'", "activations", mysql_real_escape_string($hashv)); 
$result = mysql_query($query,$dbhandle); 

然后我使用mysql_affected_rows来查看它是否成功。如果受影响的行返回1,那么我知道它存在于数据库中,并且它已被自动递增。到现在为止还挺好。

现在我想检索该行中的另一列。我是否需要执行select来重新获取同一行,或者该行是否可以从我的UPDATE命令返回的结果对象中以某种方式检索?我无法找到这种情况的一个很好的例子。

这是基本的东西,但它对我来说都是新的东西。

+2

简短的回答是否定的。但是,您可以使用两个单独的SQL语句或存储过程来完成此操作。 – 2010-08-15 11:07:35

+0

@Conspicuous编译器:+1好点。恕我直言,你应该发布它作为答案。我现在把它写在我的答案中,希望你不介意。 :) – 2010-08-15 15:41:37

回答

1

您需要运行单独的SELECT语句。

在PostgreSQL 9.0中,您可以使用UPDATE ... RETURNING更新一行并在一个查询中返回一些值。 MySQL中还没有任何等同的功能。

作为一种解决方法,您可以将UPDATE和SELECT存储在存储过程中,以便只需对数据库进行一次调用即可。

0

没有它不能在MySQL来完成,你必须发出一个单独的选择

0

如果你关心的两个查询,你可以使用()UPDATE LOW_PRIORITY PHP的mysql_unbuffered_query合并浪费时间

您无法获取修改后的行的ID,因为更新可能会修改任何一个或多个行。