0

我在尝试使用 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 字段。考虑到我复制并粘贴了上传字段的代码,读取该字段内容的代码,然后手动输入查询以更新这些字段,我看不出出了什么问题。

我错过了一些明显的东西吗?任何帮助是极大的赞赏。

谢谢,编

4

1 回答 1

0

找不到我对此进行排序的代码,但我想我最终一次只更新一个。

于 2012-11-26T16:59:01.677 回答