检查SQL语句是否实际运行

时间:2013-03-21 06:58:57

标签: php mysql

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

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

我想要做的是,如果查询实际运行,请打印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>';
            }

但这不起作用。

6 个答案:

答案 0 :(得分:1)

使用mysql_affected_rows()返回成功时受影响的行数,,如果上次查询失败,则返回-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>';
}

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

答案 1 :(得分: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注入:)

答案 2 :(得分:1)

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

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

答案 3 :(得分: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>';
                }

答案 4 :(得分:0)

我使用以下内容。

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

如果查询错误,则会返回错误。

答案 5 :(得分: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();

this