Php sql server更新(当存在时)
我有sql+php查询,需要在更新失败时通知用户exmpl:Php sql server更新(当存在时),php,sql,sql-server,sql-update,Php,Sql,Sql Server,Sql Update,我有sql+php查询,需要在更新失败时通知用户exmpl: $sql = "UPDATE db SET date = GetDate(), ... ... ... WHERE name = '$name1' and code = '$code' and value1 = '$value1' and value2='$value2' "; sqlsrv_query( $con, $sql); 现在,如果php变量值与数据库更新中的值不100%匹配,则更新失败,但用户看不到这一点。他可以检查
$sql = "UPDATE db SET
date = GetDate(),
...
...
...
WHERE name = '$name1' and code = '$code' and value1 = '$value1' and value2='$value2'
";
sqlsrv_query( $con, $sql);
现在,如果php变量值与数据库更新中的值不100%匹配,则更新失败,但用户看不到这一点。他可以检查记录,然后再试一次。我想在查询不更新任何内容时通知他。就像GOB评论的那样,您可以使用PHP函数检索受影响的行数。例如:
$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;
在直接执行更新查询之前,请检查更新查询中的条件是否存在。这可以通过选择该条件的计数来完成 请尝试以下代码:
$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'
";
}
在
sqlsrv\u查询
之后尝试sqlsrv\u行受影响($con)
,如果它返回0,则没有任何更改。在选择
和更新
之间可能有另一个查询。但这可能是一个可接受的风险:)