我发布这个是为了看看是否有人可以帮助我解决这个小问题。现在我有这个代码:
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 :(得分: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()
$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