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