2013-03-21 51 views
-1

我发布这个,以便看看有人可以帮助我解决这个小问题。现在,我有这样的代码:检查SQL语句是否实际运行

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>'; 
      } 

但是,这并不工作。

+0

是什么'visible'吗?我以前没有遇到过。 – 2013-03-21 07:00:54

+0

你不应该检查'$ updatePos'吗? – hjpotter92 2013-03-21 07:00:56

+1

您的脚本可能容易受到SQL注入攻击。 – Gumbo 2013-03-21 07:02:37

回答

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>'; 
} 

作为旁注,查询是用SQL Injection脆弱,如果变量的值(小号)从外部来了。请看下面的文章,了解如何防止它。通过使用PreparedStatements你可以摆脱使用单引号围绕值。

+1

这是有用的,谢谢! – user1638487 2013-03-21 23:14:49

+0

不客气':D' – 2013-03-21 23:24:43

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注入:)

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>'; 
       } 
0

我用下面。

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

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

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