我在尝试使用 mysql 和 php 命令连续更新两个 BLOB 字段时遇到问题。
将 BLOB 插入行似乎没有问题,这就是我所做的。
$logotemp = $_FILES['eventlogo']['tmp_name'];
$thumbnailtemp = $_FILES['eventthumbnail']['tmp_name'];
$openlogo = fopen($logotemp, 'r');
$openthumbnail = fopen($thumbnailtemp, 'r');
$logo = fread($openlogo, filesize($logotemp));
$logo = addslashes($logo);
$thumbnail = fread($openthumbnail, filesize($thumbnailtemp));
$thumbnail = addslashes($thumbnail);
fclose($openlogo);
fclose($openthumbnail);
所以我有两个表单文件输入,这些文件被读取,然后设置为变量 $log 和 $thumbnail。然后我使用以下命令将其输入数据库:
$qry = "INSERT INTO $table (`Event Logo`, `Venue Logo`) VALUES ('$logo', '$thumbnail')";
$result = mysql_query($qry);
if(!$result) {
die(mysql_error());
}
以上工作正常,尽管我已经修剪了其他也被填充的字段。查询有效,我可以将图像返回到页面,然后将它们与该行中的所有其他信息一起显示。
然后我想编辑该行,因此创建了一个名为 edit.php 的新 php 文件,它是上面使用的名为 new.php 的 php 文件的副本。
这意味着表单是相同的,当页面显示时,每个输入的值都预先填充了数据库中的信息,徽标和缩略图显示在上传字段旁边。
如果我然后运行查询来更新行,使用与上面几乎相同的代码,它总是在两个 blob 中输入一个空值,基本上删除了上传的图像。这是发生的事情:
$id = $_POST['eventid'];
$logotemp = $_FILES['eventlogo']['tmp_name'];
$openlogo = fopen($logotemp, 'r');
$logo = fread($openlogo, filesize($logotemp));
$thumbnailtemp = $_FILES['eventthumbnail']['tmp_name'];
$openthumbnail = fopen($thumbnailtemp, 'r');
$thumbnail = fread($openthumbnail, filesize($thumbnailtemp));
fclose($openlogo);
fclose($openthumbnail);
所以再一次,表单字段仍然称为 eventlogo 和 eventthumbnail,变量仍然是 $logo 和 $thumbnail。然后我使用以下查询来更新该行:
$qry = "UPDATE $table SET `Event Name` = '$name', `Date` = '$date', `Time` = '$time', `Venue` = '$venue', `Price` = '$price', `Open To` = '$opento', `Rep Name` = '$repname', `Rep Email` = '$repemail', `Address` = '$address', `Website` = '$website', `Phone` = '$phone', `Description` = '$description', `Event Logo` = '$logo', `Venue Logo` = '$thumbnail' WHERE `Event ID` = '$id'";
我已经保留了这次更新的其他变量。
$result = mysql_query($qry);
if(!$result) {
die(mysql_error());
}
当查询运行时,它将更新我想要的任何其他字段,除了最后的两个图像 BLOB 字段。考虑到我复制并粘贴了上传字段的代码,读取该字段内容的代码,然后手动输入查询以更新这些字段,我看不出出了什么问题。
我错过了一些明显的东西吗?任何帮助是极大的赞赏。
谢谢,编