【问题标题】:My SQL DELETE query works in PMA but not in my PHP scriptMysql DELETE 查询在 PMA 中有效,但在我的 PHP 脚本中无效
【发布时间】:2017-10-12 15:35:40
【问题描述】:

我叫 HiCt,是 SOF 的新手。

对于我的学校项目,我需要创建一个网站,其中包含一些 PHP 脚本和 SQL。我的页面当前在 PHP 网站上正确显示了我的 SQL 表。

现在我创建了一个删除操作来直接从页面中删除行,我在 Phpmyadmin 中对其进行了测试,它可以工作,但它不在我的网站上。

谁能看出它为什么不起作用?我注意到它创建了一个 URL,它试图删除 $naam 而不是他应该删除的 $id。

'

        $conn = mysqli_connect("localhost", "root", "", "winkel");
        error_reporting(E_ERROR | E_PARSE); #Verberg meldingen van PHP
        #error_reporting(E_ALL);

        if (mysqli_connect_errno()) {
            echo "Kan geen verbinding maken met de database!";
            exit();
        }

        if($_GET['action']=="remove")
        {;
        $sqli = "DELETE FROM klanten WHERE id = ".$_GET['id']." ";

        echo ($conn->query($sqli) === true) ? "De klant is verwijderd." : "De klant kon niet worden verwijderd.";
        }

        $sqli = "SELECT * FROM `klanten`";

        if ($stmti = $conn->prepare($sqli)) {
            if (!$stmti->execute()) {
                echo "cant exec: <br> " . $stmti->error;
                exit();
            } else {
                $stmti->bind_result($id, $naam, $adres, $woonplaats, $contactpersoon, $telefoonnummer, $emailadres, $betalingsachterstand);
                $stmti->store_result(); 

                while($stmti->fetch()) {
                    echo "<tr>";
                    echo "<td>" . $id . "</td>";
                    echo "<td>" . $naam . "</td>";
                    echo "<td>" . $adres . "</td>";
                    echo "<td>" . $woonplaats . "</td>";
                    echo "<td>" . $contactpersoon . "</td>";
                    echo "<td>" . $telefoonnummer . "</td>";
                    echo "<td>" . $emailadres . "</td>";
                    echo "<td>" . $betalingsachterstand . "</td>";
                    echo "<td><a href='klantbewerken.php?id=".$naam."&action=edit'>Bewerken</a></td>"; #Op een of andere manier melding bewerken
                    echo "<td><a href='klanten.php?id=".$id."&action=remove'>Verwijderen</a></td>"; # Verwijder een row uit de DB
                    echo "</tr>";
                }

            }
        } else {
            echo "can't prepare: <br> " . $stmti->error;
            exit();
        }
        ?>'

【问题讨论】:

  • $sqli = "DELETE FROM klanten WHERE id = ".$_GET['id']." ";此处可以进行 SQL 注入
  • 这里去掉分号 if($_GET['action']=="remove") {;
  • 感谢您对 JYoTHl 的评论,可惜没用 :(。有关更多信息,请参阅我对 Nages Katke 的回复。
  • @RaymondNijland Thnx!这是私人使用,但还是谢谢你:)
  • 可能是 $_GET['id'] 为空@HiCt

标签: php mysql sql sql-server


【解决方案1】:

您遇到了什么错误?我可以清楚地看到您的代码中有语法错误。

 if($_GET['action']=="remove")
    {;
    $sqli = "DELETE FROM klanten WHERE id = ".$_GET['id']." ";

    echo ($conn->query($sqli) === true) ? "De klant is verwijderd." : "De klant kon niet worden verwijderd.";
    }

删除;在上述代码中的 { 之后

【讨论】:

  • 感谢您的回答!它没有给出错误,只是说无法删除客户(De klant kon niet worden verwijderd)。当我将鼠标悬停在“删除”按钮上方时,它会给出以下网址:localhost/winkel/aftersales/…id=Test 不正确,Test 是名称而不是 ID,ID 是 INT。我认为故障出在某个地方,但我不知道如何解决。
  • @Nagesh Katke 括号后允许使用分号,它不会产生错误,请参阅sandbox.onlinephpfunctions.com/code/…
  • 啊好吧!我刚刚修复了奇怪的 URL 问题,我在 SQL 中的列顺序错误,它现在提供了正确的 URL,但它仍然没有删除我的行。
【解决方案2】:

我修好了。

echo "<td><a href='klanten.php?id=".$id."&action=remove'>Verwijderen</a></td>"; # Verwijder een row uit de DB     - had a error. 

它必须是 klantid= 而不是 id= 等。

非常感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    相关资源
    最近更新 更多