为什么我的PHP脚本(MySQL Query)这么慢?

Har*_*tka -1 php mysql

我运行了几分钟前制作的脚本,但仍然没有完成运行.

现在它有了,我得到了500内部服务器错误.

编辑---错误发生在第126行,这是while循环的端口:

while ($row == mysql_fetch_assoc($query)) {
            mysql_query("DELETE FROM `Likes` WHERE `accountID` = '$id'");
}
Run Code Online (Sandbox Code Playgroud)

请问你能告诉我是什么导致我的脚本这么慢?

if ($param == "closeAccount") {
    $username = NULL;
    $password = NULL;
    $emailAdd = NULL;
    $id = NULL;
    if (isset($_GET['username'])) {
        $username = $_GET['username'];
    }
    else {
        exit("No username is set");
    }
    if (isset($_GET['password'])) {
        $password = md5($_GET['password']);
    }
    else {
        exit("No password is set");
    }
    if (isset($_GET['emailAddress'])) {
        $emailAdd = $_GET['emailAddress'];
    }
    else {
        exit("No email address is set");
    }
    $query = mysql_query("SELECT * FROM `Accounts` WHERE `Username` = '$username' AND `Password` = '$password' AND `Email Address` = '$emailAdd'");
    if (mysql_num_rows($query) < 1) {
        exit("Account doesn't exist");
    }
    while ($row = mysql_fetch_assoc($query)) {
        $id = $row["id"];
    }
    $query = NULL;
    $query = mysql_query("SELECT `id` FROM `Comments` WHERE `accountID` = '$id'");
    while ($row = mysql_fetch_assoc($query)) {
        mysql_query("DELETE FROM `Comments` WHERE `accountID` = '$id'") or die(mysql_error());
    }
    $query = NULL;
    $query = mysql_query("SELECT `id` FROM `Likes` WHERE `accountID` = '$id'");
    while ($row == mysql_fetch_assoc($query)) {
        mysql_query("DELETE FROM `Likes` WHERE `accountID` = '$id'");
    }
    $query = NULL;
    $query = mysql_query("SELECT `id` FROM `Posts` WHERE `accountID` = '$id'");
    while ($row == mysql_fetch_assoc($query)) {
        mysql_query("DELETE FROM `Posts` WHERE `accountID` = '$id'");
    }
    $query = NULL;
    $query = mysql_query("DELETE FROM `Accounts` WHERE `Username` = '$username' AND `Password` = '$password' AND `Email Address` = '$emailAdd'");
    exit("Closed");
}
Run Code Online (Sandbox Code Playgroud)

pyi*_*ius 6

看来你有很多冗余.我没有你的直接数据库,所以我可能会略微关注你的结构如何,但你可以从跳过下半部分的SELECT语句中受益.

例:

$query = mysql_query("SELECT * FROM `Accounts` 
    WHERE `Username` = '$username' AND `Password` = '$password' 
    AND `Email Address` = '$emailAdd'");
if (mysql_num_rows($query) < 1) {
    exit("Account doesn't exist or wrong password entered");
}
$row = mysql_fetch_assoc($query);
$id = $row["id"]

$query = NULL;
mysql_query("DELETE FROM `Comments` WHERE `accountID` = '$id'");
mysql_query("DELETE FROM `Likes` WHERE `accountID` = '$id'");
mysql_query("DELETE FROM `Posts` WHERE `accountID` = '$id'");
mysql_query("DELETE FROM `Accounts` WHERE `id` = '$id'");
Run Code Online (Sandbox Code Playgroud)