PHP Gallery CMS-无法更新PHPMyadmin中的行(长)

PHP Gallery CMS-无法更新PHPMyadmin中的行(长),php,Php,项目:为摄影网站创建一个简单的CMS。我的第一个php项目:) 问题:我已经完成了90%的CMS,但是在从数据库读取后,遇到了无法更新行数据的问题 目标:我试图实现的目标似乎很简单。我有一个从数据库(id,图像)读取图像数据的管理页面,我使用while循环来显示它。它工作得很好,删除按钮也是如此 首先,它失败是因为这个['name\u tmp'] 语法是['tmp_name']-您将它们颠倒过来了 所以你的临时文件永远不会被处理 然后根据您的编辑和查看HTML表单: 您使用的是name=“

项目:为摄影网站创建一个简单的CMS。我的第一个php项目:)

问题:我已经完成了90%的CMS,但是在从数据库读取后,遇到了无法更新行数据的问题

目标:我试图实现的目标似乎很简单。我有一个从数据库(id,图像)读取图像数据的管理页面,我使用while循环来显示它。它工作得很好,删除按钮也是如此


首先,它失败是因为这个
['name\u tmp']

语法是
['tmp_name']
-您将它们颠倒过来了

  • 所以你的临时文件永远不会被处理
然后根据您的编辑和查看HTML表单:

您使用的是
name=“file\u upload”
,然后使用
$\u FILES['image']
数组;这些名字需要匹配

错误报告在这里会对您有所帮助

添加到文件的顶部,这将有助于查找错误

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code
根据


检查所有查询的错误;您在
$query=“SELECT*FROM photos\u id=$photo\u id”中没有这样做查询

如果某个地方出现错误,则将
或die(mysqli\u error($connection))
添加到所有
mysqli\u query()


HTML粘贴器。


它失败是因为这个
['name\u tmp']
。语法是
['tmp\u name']
-Ref:因此您的临时文件永远不会得到处理。但是,我在这里的任何地方都看不到
type=“file”name=“image”
,也看不到上载文件附带的表单。因此。。。我是不是在这里充耳不闻?我留下的评论我们在哪里?弗雷德-谢谢。我已经添加了我用来尝试和更新行的html表单。你很容易受到攻击,用JS确认“保护”你的删除链接是没有用的。禁用JS的客户端(尤其是爬行器/预取器)将忽略它并点击您的删除链接,现在您已经取消了所有操作。读这篇文章:谢谢你的评论,弗兰克。这对一个新手来说是一个很大的挑战。我将尝试进行这些编辑/建议,看看我是否找不到问题。@LesTaylor不客气。是的,我知道,更新数据库可能很棘手。但是有一件事我不确定,就是这个
,在所有这些中,没有
标记。TBH,我不确定如果没有它们,它是否也在这一切中发挥作用。再次检查错误并查看HTML源代码以查看其中的内容。我敢肯定,这对程序员来说是一个很好的工具,会对你有所帮助。就像执行
var\u dump()
print\u r()
来查看设置了什么或没有设置什么一样。我做了一些编辑,但不确定是否还能帮上忙。
    <?php 

    if (isset($_GET['p_id'])) {

    $photo_id = $_GET['p_id']; 

    // Send query to photos table in database. //
    $query = "SELECT * FROM photos WHERE photos_id = $photo_id";
    $result = mysqli_query($connection, $query);

    // Grab unique row from photos table in database. //
    while($row = mysqli_fetch_assoc($result)) {

    $photo_file = $row['photos_image'];
    $photos_title = $row['photos_title'];
    $photos_desc = $row['photos_alt'];

    }

    }

    ?> 
<?php

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

    // After "Save" is pressed, the values white space is trimmed and assigned to a variable. //
    $photos_title = trim($_POST['photos-title']);
    $photos_desc = trim($_POST['photos-description']);
    $photos_file = $_FILES['image']['name'];
    $photos_file_temp = $_FILES['image']['name_tmp'];

    // The new variables are sanitized. //
    $photos_title = mysqli_real_escape_string($connection, $photos_title);
    $photos_desc = mysqli_real_escape_string($connection, $photos_desc);

    }

    // Send the Update query to the database. //
    $update_query = " UPDATE photos SET
              photos_image = '$photos_file', photos_title = '$photos_title', photos_alt = '$photos_desc'
              WHERE photos_id = '$photo_id' ";

    // Test the SQL syntax. // 
    if(!$update_query) {

    echo "Wrong." . " " .  mysqli_error($connection);
    }
    else { echo "The SQL appears right..." . "<br>";
    } 


    // Test the Update query. //         
    $update_result = mysqli_query($connection, $update_query);

    if(!$update_result) {
    echo "Didnt Connect." . " " .  mysqli_error($connection);
    } else {
    echo "Sent query to to database.";
    }

    ?>

    <form action="edit_photo.php" class="settings-form" method="post" enctype="multipart/form-data">

    <div class="form-group edit-preview">
        <label for="image">Photo</label>
        <img src= <?php echo "../images/$photo_file"?> >
        <input type="file" name="file_upload">
    </div>

    <div class="form-group">
        <label for="photos-title">Title</label>
        <input type="text" name="photos-title" value= <?php echo "$photos_title" ?> class="form-control">
    </div>

    <div class="form-group">
        <label for="photos-description">Description</label>
        <textarea type="text" rows="4" name="photos-description" class="form-control" ><?php echo "$photos_desc" ?> </textarea>
    </div>

    <div class="form-group">
    <input type="submit" name="image" class="btn btn-primary" value="Save Photo">
    </div>

</form>
<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code
$photos_file = $_FILES['file_upload']['name']; // notice I changed it to what it should be
$photos_file = mysqli_real_escape_string($connection, $photos_file);
$photo_id = $_GET['p_id'];
$photo_id = (int)$_GET['p_id'];