使用PHP使用UPDATE MySQL更新数据库中的blob图像

时间:2014-06-13 05:24:27

标签: php mysql database blob

我正在尝试更新我的数据库中的blob类型的记录,我可以很容易地使用此方法插入但是当使用UPDATE时它似乎不起作用,仅用于文本。有人能指出我正确的方向吗?

这是我的代码:

<?php
$conn=mysqli_connect("localhost","root","root","plantidentify");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$ufamid = mysqli_real_escape_string($conn, $_POST['ufamilyid']);
$ucommonname = mysqli_real_escape_string($conn, $_POST['ucomname']);
$usynname = mysqli_real_escape_string($conn, $_POST['usynonyms']);
$uspecies = mysqli_real_escape_string($conn, $_POST['uspecies']);
$uprop = mysqli_real_escape_string($conn, $_POST['upropagation']);
$uimageData = mysqli_real_escape_string($conn, (file_get_contents($_FILES['uimage']['tmp_name'])));
$uheight = mysqli_real_escape_string($conn, $_POST['uheight']);
$utreeclass = mysqli_real_escape_string($conn, $_POST['utreeclass']);
$ulifecycle = mysqli_real_escape_string($conn, $_POST['ulifecycle']);

$UpdateQuery = "UPDATE plant 
                SET FamilyID='$ufamid', CommonName='$ucommonname',       
                    SynonymNames='$usynname', Species='$uspecies', 
                    Propagation='$uprop', Image='$uimageData', 
                    Height='$uheight', TreeClass='$utreeclass', 
                    Lifecycle='$ulifecycle' 
                WHERE PlantID='$_POST[uplantid]'";


if (!mysqli_query($conn,$UpdateQuery)) {
  die('Error: ' . mysqli_error($conn));
}

header("Location: plantedit.php");

mysqli_close($conn);
?>

$ uimageData是一个变量,其中包含我的表单中另一个文件中的上传文件。我正在尝试更新blob的数据库中的列称为&#34; Image&#34;。

这可能会有所帮助,这里是另一个.php中的表单代码,更新plant.php会从中触发:

    <?php //display databse values
        while($plant=mysql_fetch_array($retval)) {
        echo"<form action=updateplant.php method=post>";

        echo "<tr>";
        echo "<td>" . "<input type=number name=ufamilyid value='" .$plant['FamilyID']."' ></td>";
        echo "<td>" . "<input type=text name=ucomname value='" .$plant['CommonName']."' ></td>";
        echo "<td>" . "<input type=text name=usynname value='" .$plant['SynonymNames']."' ></td>";
        echo "<td>" . "<input type=text name=uspecies value='" .$plant['Species']."' ></td>";
        echo "<td>" . "<input type=text name=uprop value='" .$plant['Propagation']."' ></td>";
        echo "<td>" . "<input type=file name=uimage></td>";
        echo "<td>" . '<img class="crop2" src="data:image/jpeg;base64,'. base64_encode( $plant['Image'] ).'"/>'." </td>";
        echo "<td>" . "<input type=number name=uheight value='" .$plant['Height']."' ></td>";
        echo "<td>" . "<input type=text name=utreeclass value='" .$plant['TreeClass']."' ></td>";
        echo "<td>" . "<input type=text name=ulifecycle value='" .$plant['Lifecycle']."' ></td>";
        echo "<td>" . "<input type=hidden name=uplantid value='" .$plant['PlantID']."' ></td>";
        echo "<td>" . "<input type=submit name=update value=Update" . " ></td>";
        echo "</tr>";




        echo "</form>";
        }//end while
        mysql_close($conn);
        ?>

2 个答案:

答案 0 :(得分:3)

上传文件,您应该在表单中提及enctype='multipart/form-data'。希望这能解决你的问题。

<?php 

//display databse values
            while($plant=mysql_fetch_array($retval)) {
            echo"<form action='updateplant.php' method='post'  enctype='multipart/form-data' >";

            echo "<tr>";
            echo "<td>" . "<input type=number name=ufamilyid value='" .$plant['FamilyID']."' ></td>";
            echo "<td>" . "<input type=text name=ucomname value='" .$plant['CommonName']."' ></td>";
            echo "<td>" . "<input type=text name=usynname value='" .$plant['SynonymNames']."' ></td>";
            echo "<td>" . "<input type=text name=uspecies value='" .$plant['Species']."' ></td>";
            echo "<td>" . "<input type=text name=uprop value='" .$plant['Propagation']."' ></td>";
            echo "<td>" . "<input type=file name=uimage></td>";
            echo "<td>" . '<img class="crop2" src="data:image/jpeg;base64,'. base64_encode( $plant['Image'] ).'"/>'." </td>";
            echo "<td>" . "<input type=number name=uheight value='" .$plant['Height']."' ></td>";
            echo "<td>" . "<input type=text name=utreeclass value='" .$plant['TreeClass']."' ></td>";
            echo "<td>" . "<input type=text name=ulifecycle value='" .$plant['Lifecycle']."' ></td>";
            echo "<td>" . "<input type=hidden name=uplantid value='" .$plant['PlantID']."' ></td>";
            echo "<td>" . "<input type=submit name=update value=Update" . " ></td>";
            echo "</tr>";




            echo "</form>";
            }//end while
            mysql_close($conn);
        ?>

答案 1 :(得分:0)

您似乎在WHERE语句中输入了拼写错误,$_POST[uplantid]应为". $_POST['uplantid'] ."