【问题标题】:mysql update 2 blobs at once not workingmysql一次更新2个blob不起作用
【发布时间】:2012-04-30 01:36:40
【问题描述】:

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

我是否遗漏了一些明显的东西?非常感谢任何帮助。

谢谢,编辑

【问题讨论】:

  • 第一。按原样使用参数化 SQL,这很麻烦。其次,在 edit.php 中,您至少缺少对徽标的“addslashes”调用。二进制数据将包含扰乱你的 sql 查询的字符,但 mysql(和其他 sql 服务器)会默默地接受这些。
  • 抱歉,我的代码确实包含了加斜线,但由于某种原因没有包含在此处。打开文件并将其读取为二进制文件时一定有问题,然后就空了

标签: mysql image upload blob


【解决方案1】:

找不到我用来排序的代码,但我想我最终一次只更新一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    相关资源
    最近更新 更多