dongqian9567 2013-09-18 10:42
浏览 40
已采纳

图像更新php mysql

I have a problem with updating images. Sending images to the server and insert new records runs without a problem but have not edited when editing photos, and data to the database are thrown only texts and records not responsible for the pictures. Thank you in advance for your help

Form

<?php
//1. polaczenie z baza danych
//polaczenie z baza danych + ustawienie kodowania na utf8
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "3edcvfr4";
$dbname = "dw_bookstore";
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

//sprawdzenie polaczenia
if (mysqli_connect_errno()) {
    printf("Connect failed: %s
", mysqli_connect_error());
    exit();
}

//zmaiana znako na utf8
if (!mysqli_set_charset($connection, "utf8")) {
    printf("Error loading character set utf8: %s
", mysqli_error($connection));
} else {
    printf("Kodowanie ustawione na: %s
", mysqli_character_set_name($connection));
}
?>

<?php
    // get ID
    @$id = $_GET['id'];

    @$query  = "SELECT * FROM photographs WHERE id = '$id' ";
    //pokazuje co zostalo zmienione
    echo $query;

    $result = mysqli_query($connection, $query);
    if (!$result) {
        die("zapytanie sie nie powiodlo");
    }
    $row = mysqli_fetch_array($result);

?>


<?php
//if (!id) {
//  redirect_to("costam.php");
//  }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Update Form</title>
</head>
<body>
        <form action="database_update_action.php" method="post" enctype="multipart/form-data" name="form1" target="_blank">
      <table border="0" cellspacing="2" cellpadding="2">
        <tr>
          <td>ID:</td>
          <td><input name="id" type="text" id="id" value="<?php echo $row['id'];?>"></td>
        </tr>
        <tr>
          <td>filename</td>
          <td><label for="filename"></label>
          <input name="filename" type="file" id="filename" value="<?php echo $row['filename'];?>"></td>
        </tr>
        <tr>
          <td>type</td>
          <td><label for="type"></label>
          <input name="type" type="text" id="type" value="<?php echo $row['type'];?>"></td>
        </tr>
        <tr>
          <td>size</td>
          <td><label for="size"></label>
          <input name="size" type="text" id="size" value="<?php echo $row['size'];?>"></td>
        </tr>
        <tr>
          <td>caption</td>
          <td><label for="caption"></label>
          <input name="caption" type="text" id="caption" value="<?php echo $row['caption'];?>"></td>
        </tr>
        <tr>
          <td>caption_2</td>
          <td><label for="caption_2"></label>
          <input name="caption_2" type="text" id="caption_2" value="<?php echo $row['caption_2'];?>"></td>
        </tr>
        <tr>
          <td>txt</td>
          <td><label for="txt"></label>
          <textarea name="txt" id="txt" cols="45" rows="5"><?php echo $row['txt']; ?></textarea></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td><input type="submit" name="submit" id="submit" value="update"></td>
        </tr>
      </table>
    </form>

<?php
    //4. release returned data
    //mysqli_free_result($result);
?>
</body>
</html>

<?php
    // 5. Zamkniecie bazy
    mysqli_close($connection);
?>

Action

<?php
//1. polaczenie z baza danych
//polaczenie z baza danych + ustawienie kodowania na utf8
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "3edcvfr4";
$dbname = "dw_bookstore";
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

//sprawdzenie polaczenia
if (mysqli_connect_errno()) {
    printf("Connect failed: %s
", mysqli_connect_error());
    exit();
}

//zmaiana znako na utf8
if (!mysqli_set_charset($connection, "utf8")) {
    printf("Error loading character set utf8: %s
", mysqli_error($connection));
} else {
    printf("Kodowanie ustawione na: %s
", mysqli_character_set_name($connection));
}
?>

<?php
//2. przeslanie zdjecia wraz z danymi


    @$path = $_FILES["file"]["name"];
    @$type = $_FILES["file"]["type"];
    @$size = $_FILES["file"]["size"];
    $id = $_POST["id"];
    $caption = $_POST["caption"];
    $caption_2 = $_POST["caption_2"];
    $txt = $_POST["txt"];

    // przyklad - by moc wpisac 'costam' - tylko txt, nie "file" i "int"
    $caption = mysqli_real_escape_string($connection, $caption);
    $caption_2 = mysqli_real_escape_string($connection, $caption_2);
    $txt = mysqli_real_escape_string($connection, $txt);

    // 2. Perform database query
    $query  = "UPDATE photographs SET ";
    $query .= "id = '{$id}', ";
    $query .= "filename = '{$path}', ";
    $query .= "size = '{$size}', ";
    $query .= "type = '{$type}', ";
    $query .= "caption = '{$caption}', ";
    $query .= "caption_2 = '{$caption_2}', ";
    $query .= "txt = '{$txt}' ";
    $query .= "WHERE id = {$id}";
    echo $query;

    //$query  = "INSERT INTO photographs (";
    //$query .= "  filename, type, size, caption, caption_2, txt";
    //$query .= ") VALUES (";
    //$query .= "  '{$path}', '{$type}', '{$size}', '{$caption}', '{$caption_2}', '{$txt}'";
    //$query .= ")";

    $result = mysqli_query($connection, $query);
    if ($result) {
        // Success
        // redirect_to("somepage.php");
        echo " Sukces! Dane zostaly przeslane na serwer. ";
    } else {
        // Failure
        // $message = "Subject creation failed";
        die("Przeslanie danych nie powiodlo sie. " . mysqli_error($connection));


        if(isset($_POST['submit'])){
    if (((@$_FILES["file"]["type"] == "image/gif")
    || (@$_FILES["file"]["type"] == "image/jpeg")
    || (@$_FILES["file"]["type"] == "image/JPEG")
    || (@$_FILES["file"]["type"] == "image/jpg")
    || (@$_FILES["file"]["type"] == "image/png")
    || (@$_FILES["file"]["type"] == "image/pjpeg"))
    && (@$_FILES["file"]["size"] < 600000))
    {
        if ($_FILES["file"]["error"] > 0)
        {
            echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
        }
        else
        {
        if (file_exists("../images/" . $_FILES["file"]["name"])){
                echo $_FILES["file"]["name"] . " to zdjecie juz istnieje. ";
        }
        else{
        move_uploaded_file($_FILES["file"]["tmp_name"], "../images/" .              $_FILES["file"]["name"]);


                echo " Przeslane do katalogu : " . "images/" . $_FILES["file"]["name"];



      }
     }
    }
   }
}


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Update Action</title>
</head>
<body>
</body>
</html>
<?php
  // 5. Zamkniecie polaczenia
  mysqli_close($connection);
?>
  • 写回答

3条回答 默认 最新

  • doukai2839 2013-09-18 13:37
    关注

    When you are updating, you are not providing the image file again so it updates it with null value when you want to update. This is probably occuring when you don't select an image file. You can replace the query section like this:

    $query  = "UPDATE photographs SET ";
        $query .= "id = '{$id}', ";
    
    if(isset($_FILES['file'])){
        $query .= "filename = '{$path}', ";
        $query .= "size = '{$size}', ";
        $query .= "type = '{$type}', ";
    }
    
        $query .= "caption = '{$caption}', ";
        $query .= "caption_2 = '{$caption_2}', ";
        $query .= "txt = '{$txt}' ";
        $query .= "WHERE id = {$id}";
        echo $query;
    

    EDIT Another thing, you should escape the value of file so add this line before creation sql query:

     $path = mysql_real_escape_string($path);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。