-1

我发布这个是为了看看是否有人可以帮助我解决这个小问题。现在我有这个代码:

visible $sqlUpdate = "UPDATE user.user SET level='1' WHERE id='".$_GET['char']."' AND level >249 AND power>0 LIMIT 1";

我想要做的是,如果查询实际运行, print Correct,否则,Error.

我尝试了什么:

visible       $sqlUpdate = "UPDATE user.user SET level='1' WHERE id='".$_GET['char']."' AND level >249 AND power>0 LIMIT 1";
              $updatePos = mysql_query($sqlUpdate);
              if($sqlUpdate==1) {

              }
              else { echo'<p class="as">Correct.</p>'; }

            }
            else {
              echo'<p class="as">Error .</p>';
            }

但这不起作用。

4

6 回答 6

1

如果条件应检查 $updatePos。如果它是真的,那么它是正确的,否则它会给你错误。

你可以从这里查看一个例子:http: //php.net/manual/en/function.mysql-query.php

于 2013-03-21T07:10:17.120 回答
1

使用mysql_affected_rows()which 返回成功时受影响的行数,如果最后一个查询失败则返回 -1

$chrVal = $_GET['char'];
$sqlUpdate = "UPDATE user SET level = '1' WHERE id = '$chrVal' AND level > 249 AND power > 0 LIMIT 1";
$updatePos = mysql_query($sqlUpdate);
if(mysql_affected_rows() >= 1) 
{ 
    echo'<p class="as">Correct.</p>';
}
else
{
    echo'<p class="as">Error .</p>';
}

作为旁注,SQL Injection如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-03-21T07:02:46.340 回答
1

如果您想知道行是否更新。尝试mysql_affected_rows()

mysql_affected_rows()

$char = mysql_escape_string($_GET['char']);
$sqlUpdate = "UPDATE user.user SET level='1' WHERE id='" . $char . "' AND level >249 AND power>0 LIMIT 1";
$updatePos = mysql_query($sqlUpdate);
$affRows = mysql_affected_rows();
if ($affRows) {
  echo'<p class="as">Correct.</p>';
} else {
  echo'<p class="as">Error .</p>';
}

也用于mysql_escape_string避免 sql 注入 :)

于 2013-03-21T07:02:59.003 回答
0

尝试这个:

$sqlUpdate = "UPDATE user.user SET level='1' WHERE id='".$_GET['char']."' AND level >249 AND power>0 LIMIT 1";
              $updatePos = mysql_query($sqlUpdate);
              if($updatePos==1) {

              }
              else { echo'<p class="as">Correct.</p>'; }

            }
            else {
              echo'<p class="as">Error .</p>';
            }

您也可以检查它 mysql_num_rows();

这样

于 2013-03-21T07:08:50.960 回答
0

将变量名 $sqlUpdate 更改为 $updatePos

$sqlUpdate = "UPDATE user.user SET level='1' WHERE id='".$_GET['char']."' AND level >249 AND power>0 LIMIT 1";
                  $updatePos = mysql_query($sqlUpdate);
                  if($updatePos==1) {

                  }
                  else { echo'<p class="as">Correct.</p>'; }

                }
                else {
                  echo'<p class="as">Error .</p>';
                }
于 2013-03-21T07:03:23.617 回答
0

我使用以下。

 if( $updatePos = mysql_query($sqlUpdate))
 {
 echo'<p class="as">Correct.</p>';     
 }
 else
 {
 echo'<p class="as">Error.</p>';     
 }

如果查询错误,它将返回错误。

于 2013-03-21T07:07:35.860 回答