我是php和sql的新手。我有一个有三列的表格。一个256位的哈希数和两个整数。我想搜索与我的散列匹配的行,然后检索一个int并递增另一个。所以,我想我可以先使用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命令返回的结果对象中以某种方式检索该行?对于这种情况,我找不到一个好的例子。
这是基本的东西,但对我来说却是全新的。
发布于 2010-08-15 18:53:22
您需要运行单独的SELECT语句。
在PostgreSQL 9.0中,您可以使用UPDATE ... RETURNING在一个查询中更新一行并返回一些值。在MySQL中还没有任何等效的功能。
作为一种解决办法,您可以将更新和选择放在存储过程中,这样您只需要对数据库进行一次调用。
发布于 2010-08-15 19:22:10
不,这不能在mysql中完成,您必须发出单独的select命令
发布于 2010-08-20 02:49:58
如果您担心在两个查询上浪费时间,可以结合使用UPDATE LOW_PRIORITY和PHP mysql_unbuffered_query()
您无法获取已修改行的ID,因为更新可能不会修改任何行,也可能会修改多行。
https://stackoverflow.com/questions/3487054
复制相似问题