当 WHERE 存在时 sql server 更新
Posted
技术标签:
【中文标题】当 WHERE 存在时 sql server 更新【英文标题】:sql server update when WHERE exist 【发布时间】:2014-07-14 06:41:08 【问题描述】:我有 sql + php 查询,我需要在更新失败示例时通知用户:
$sql = "UPDATE db SET
date = GetDate(),
...
...
...
WHERE name = '$name1' and code = '$code' and value1 = '$value1' and value2='$value2'
";
sqlsrv_query( $con, $sql);
现在如果 php 变量值不是 100% 匹配 db 更新中的值失败但用户看不到。他可以检查记录,然后再试一次。我想在查询没有更新时通知他。
【问题讨论】:
在sqlsrv_query
之后尝试sqlsrv_rows_affected($con)
,如果返回0,则没有任何变化
【参考方案1】:
就像 GOB 评论的那样,您可以使用 PHP sqlsrv_rows_affected
函数来检索受影响的行数。例如:
$stmt = sqlsrv_query( $conn, $sql , $params, $options );
$row_count = sqlsrv_rows_affected( $stmt );
if ($row_count === false)
echo "Error in retrieving row count.";
else
echo $row_count;
【讨论】:
【参考方案2】:在直接执行更新查询之前,检查更新查询中的条件是否存在。这可以通过选择该条件的计数来完成。
试试下面的代码:
$sql = "select count(*) as count from db WHERE name = '$name1' and code = '$code' and value1 = '$value1' and value2='$value2' ";
while($row = mysqli_fetch_array($sql))
$count = $row['count'];
if($count == 0)
echo 'update will fail';
else
$sql = "UPDATE db SET
date = GetDate(),
...
...
...
WHERE name = '$name1' and code = '$code' and value1 = '$value1' and value2='$value2'
";
【讨论】:
您的select
和update
之间可能还有另一个查询。不过可能是可以接受的风险:)以上是关于当 WHERE 存在时 sql server 更新的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server-聚焦WHERE Column=@Param OR @Param IS NULL有问题?