【问题标题】:Just need assistance some php CRUD functionality只需要一些 php CRUD 功能的帮助
【发布时间】:2017-01-06 17:30:24
【问题描述】:

我目前正在用 php 编写一个网站,不幸的是我遇到了障碍,我似乎无法让我的 amend.php 和 update.php 页面正常工作,下面是我创建的显示页面上的更新代码。

显示页面显示带有描述性列的表当超链接“修改”选择它运行amend.php。

修改

<?php
include 'connection.php';



$id = $_GET ['theid'];

$query = "SELECT * FROM place WHERE placeid = '$id'";

$results = mysqli_query($connection,$query);

$row = mysqli_fetch_assoc($results);
?>
<?php include 'header.php'; ?>

    <body>
        <h2>Amend</h2>

            <form method="post" action="updateplace.php">

                <fieldset class="fieldset-width1">

                    <input type="hidden" name="hiddenID" value= "<?php echo $row['placeid']; ?>" />
                    <br />
                    <br />
                    <label class="align" for="txtplacename">Place Name: </label>
                    <input type="text" name="txtplacename" value = "<?php echo $row['placename']; ?>" />
                    <br />
                    <br />
                    <label class="align"for="txtplacedesc">Place description: </label>
                    <input type="text" name="txtplacedesc" value = "<?php echo $row['placedesc']; ?>" />
                    <br />
                    <br />
                    <label class="align"for="txtplacecat">Place category: </label>
                    <input type="text" name="txtplacecat" value = "<?php echo $row['placecat']; ?>" />
                    <br />
                    <br />
                    <label class="align" for="txtplaceimg">Place image: </label>
                    <input type="text" name="txtplaceimg" value = "<?php echo $row['placeimg']; ?>" />
                    <br />
                    <br />
                    <input type="submit" value="Submit" name='submit' />
                    </fieldset>
            </form>
        </p>
<?php include 'footer.php'; ?>
    </body>

</html>

这个 php 页面使用选定的 ID 显示来自 phpmyadmin 的所有数据。

更新

<?php
include 'connection.php';

if(isset($_POST['submit'])){

 $placeid = $_POST['hiddenID'];
 $placename = $_POST['txtplacename'];
 $placedesc = $_POST['txtplacedesc'];
 $placecat = $_POST['txtplacecat'];
 $placeimg = $_POST['txtplaceimg'];
}

$query = "UPDATE place 
SET placename = '$placename';
SET placedesc = '$placedesc';
SET placecat = '$placecat';
SET placeimg = '$placeimg';
WHERE
placeid = '$placeid'";

mysqli_query($connection,$query);

header("location:admin.php");

当我选择提交按钮时,标题会重定向我,但是我更改的所有列都不会更新。任何帮助将不胜感激,谢谢

【问题讨论】:

    标签: php cloud9


    【解决方案1】:

    查看您的 UPDATE 查询,

    $query = "UPDATE place 
    SET placename = '$placename';  <==
    SET placedesc = '$placedesc';  <==
    ...
    

    您正在使用; 在每一行中终止您的UPDATE 操作,这会破坏您的查询。此外,您的UPDATE 查询本身是错误的,应该是这样的:

    $query = "UPDATE place SET placename = '$placename', placedesc = '$placedesc', placecat = '$placecat', placeimg = '$placeimg' WHERE placeid = '$placeid'";
    

    旁注:了解prepared statement,因为现在您的查询容易受到 SQL 注入攻击。还有一个很好的阅读how you can prevent SQL injection in PHP

    【讨论】:

    • 在发布之前,我确实有查询,因为您已经编写了它,只是在我感到沮丧并开始向每列添加集合以尝试修复我的代码之前,每个列名后缺少逗号。感谢您的帮助,祝您有美好的一天!
    • @K-dawggggg 不客气!再指出一件事,你应该养成接受答案的习惯,否则问题将作为开放问题四处飘散。此外,它还将鼓励其他开发人员进一步帮助您。 How to accept answer on Stack Overflow?
    【解决方案2】:

    您不应该仅仅假设查询是成功的。用此替换您的 mysqli_query 行以了解发生了什么:

    if (!mysqli_query($connection, $query)) {
        echo("Error description: " . mysqli_error($connection));
        die();
    }
    

    假设您有某种错误,它将阻止重定向和显示。如果您仍然收到重定向,则查询本身没有问题,而是您的 $placeid 值在数据库中不存在。

    【讨论】:

    • 谢谢你,我从来不知道你可以回应错误描述,我现在也有代码工作。祝你有美好的一天!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多