我正在尝试更新我的数据库中的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);
?>
答案 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'] ."