对于严厉措辞的标题,我不知道还有什么可以称之为这种情况。
这是我的困境,为了好玩,我正在制作一个小小的装备,这样人们就可以提交战地3服务器的名称,平台和位置,这样他们就不再需要依赖口碑了。
这个旧代码工作正常,删除记录并完成它的工作。
<?php
mysql_connect('localhost', 'root', 'pass');
mysql_select_db('database');
$server_secret = mysql_real_escape_string($_POST['secret_initial']);
$server_confirm = mysql_real_escape_string($_POST['secret_verify']);
if ($server_secret == $server_confirm) {
echo "Both matched.";
if ((strlen($server_secret) < 6) and (strlen($server_verify) < 6)) {
echo "Password too short.";
} else {
echo "Password is of proper length.";
$sql = "DELETE FROM `servers` WHERE secret='" . sha1($server_secret) . "'";
mysql_query($sql) or die("Couldn't delete record. " . mysql_error());
}
} else {
echo "Mismatch.";
}
?>
但是,如果我使用它:
<?php
mysql_connect('localhost', 'root', 'pass');
mysql_select_db('database');
// Create variables from form
$server_secret = mysql_real_escape_string($_POST['secret_initial']);
$server_confirm = mysql_real_escape_string($_POST['secret_verify']);
// Check for verification
if ($server_secret == $server_confirm) {
// Delete from database
$sql = "DELETE FROM `servers` WHERE secret='" . sha1($server_secret) . "'";
if (mysql_query($sql) or die("Couldn't delete record. " . mysql_error()) {
$success = true;
} else {
$success = false;
}
}
?>
它总是报告$ success为true,即使它是错误的,也让我感到困惑的是即使秘密和验证都正确,条目也不会从MySQL数据库中删除。
旧版本可以正常工作。这就是令我困惑的事情。
我用于检查成功的相同方法(if (mysql_query($sql)
)在插入时工作得很好,如果它失败了,实际上会给我反馈,但出于某种原因,当我尝试删除记录时它总是报告成功。
如果有人可以帮助我,我真的很感激。
请注意:我是PHP / MySQL的新手,所以请原谅。
答案 0 :(得分:2)
答案 1 :(得分:1)
这是因为查询在语法上是正确的,因此永远不会出现错误。相反,您希望找到实际受影响的行数:
<?php
mysql_connect('localhost', 'root', 'pass');
mysql_select_db('database');
// Create variables from form
$server_secret = mysql_real_escape_string($_POST['secret_initial']);
$server_confirm = mysql_real_escape_string($_POST['secret_verify']);
// Check for verification
if ($server_secret == $server_confirm) {
// Delete from database
$sql = "DELETE FROM `servers` WHERE secret='" . sha1($server_secret) . "'";
$result = mysql_query($sql);
if (mysql_affected_rows($result)) {
$success = true;
} else {
$success = false;
}
}
?>