使用PHP更新MYSQL数据库上的图像信息的问题

时间:2012-12-18 13:41:23

标签: php mysql phpmyadmin

我的代码有问题。我无法更新我的图片。

这是我的完整代码:

的index.php

//this link will post my data to next page
<a href="updatepage.php?code=<?php echo $row['name']; ?>">update</a> 

updatepage.php

 //this page will get all data that want to update...
 <?php
 include("config.php");
 $name=$_GET['code'];
 $sql1  = "select * from imagename where name='$name'";
 $result = mysql_query($sql1) or die(mysql_error());
 $row=mysql_fetch_array($result);?>
<form name="form1" method="post" action="processupdatepage.php"  class="formposition" enctype="multipart/form-data" >
  <table>
   <tr><td>
    <input type="hidden" name="id" value="<?php echo $row['id']; ?>" /></td></tr>
   <tr><td width="98">Image</td><td width="288">
  //This is where I have problem, I can't get my image value but other data value work very well.....
    <input type="file" name="image" value="<?php echo $row['image'];?>" /></td></tr><br/> 
   <tr><td>nane</td><td><input type="text" name="name" value="<?php echo $row['name']; ?>"/></td></tr><br/>       
   <tr><td></td> <td colspan="2">
    <input type="submit" name="submit" value="Save" />  </td></tr>
  </table>
</form>

行。现在这是我的处理文件:

processupdatepage.php

<?php
include("config.php");
$id=$_POST['id'];
$image=$_FILES['image']['name'];
$name=$_POST['name'];
$target = "images/"; 
$target = $target . basename( $_FILES['image']['name']);
$query = "UPDATE imagename SET name='$name', image='$image' WHERE id='$id'";
$bb = mysql_query($query) or die(mysql_error());
if($bb)
{
//Writes the photo to the server 
    if(move_uploaded_file($_FILES['image']['tmp_name'], $target)) 
    {  
      $sql001="UPDATE imagename SET image='$image' WHERE image='$image'";
    mysql_query($sql001);
    } else { } 
    header("Location:index.php");
}
else
{
    echo "Could not be updated";
}
?>

我可以更新但必须选择图像。如果我没有选择图像,我在数据库中的图像字段将为空,但其他数据更新是正常的......

3 个答案:

答案 0 :(得分:0)

无法以编程方式更改<input type="file">的值。只有触发弹出选择文件对话框的默认行为。

我从您看到的示例代码是您希望将值与文件表单控件元素直接关联,因为它是从数据库中检索的。那么为什么要保存同样的东西。但是,如果要执行此操作,可以使用带有值的隐藏元素,该元素将被保存。但是,如果您不希望用户更改它,只是不要将其呈现在表单中并将其从更新查询中删除,以使其保持不变。

此外,您可以在处理帖子时添加一些逻辑,如果没有选择文件,则将字段“图像”保留在更新查询之外。

答案 1 :(得分:0)

我认为问题在于:

<input type="file" name="image" value="<?php echo $row['image'];?>" />

您可以点击浏览按钮上传图片。所以你想做什么呢? 如果要显示已上传的图像,可以使用:

$img_path = 'get image path from database entry';
<img src= "<?php echo $img_path; ?>"/>

答案 2 :(得分:0)

以下是上传图片的完整代码,这已经过测试并且有效,但您需要有一个名为“upload”的目录(此代码不会创建该文件夹)。

建议只在数据库中存储图像路径。

<?php
if(isset($_POST['submit'])){
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/png")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 200000))
    {
        if ($_FILES["file"]["error"] > 0)
        {
            echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
        }
        else
        {
            if (file_exists("upload/" . $_FILES["file"]["name"])){
                echo $_FILES["file"]["name"] . " already exists. ";
            }
            else{
                move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
                echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
                    // HERE YOU CAN WRITE YOU INSERT INTO MYSQL CODE
                    //SOMETHING LIKE THIS:
                    $path = 'assets/article_images/'.$article_id.'/'.$_FILES["image_file"]["name"];
                    $statement1 = "INSERT INTO image_article (article_id, image_path) values ('$article_id', '$path') ";
                    $query_result = mysql_query($statement1) or die($statement1."mysql error<br/><br/>".mysql_error());
                    if($query_result==1){
                        echo 'Image uploaded';
                    }
            }
        }
    }
    else
    {
    echo "Invalid file";
    }
}

?>

<html>
<body>

<form action="index.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>