Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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
Php sql server更新(当存在时)_Php_Sql_Sql Server_Sql Update - Fatal编程技术网

Php sql server更新(当存在时)

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+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%匹配,则更新失败,但用户看不到这一点。他可以检查记录,然后再试一次。我想在查询不更新任何内容时通知他。

就像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,则没有任何更改。在
选择
更新
之间可能有另一个查询。但这可能是一个可接受的风险:)