我如何 post 我的 blob 到同一个 ID 的不同行?

How do I post my blobs into different rows on the same id?

我的table:

创建 TABLE 如果不存在 mytable (
id int(11) NOT NULL AUTO_INCREMENT,
img1 mediumblob 不为空,
img2 mediumblob 不为空,
ext1 varchar(8) 不为空,
ext2 varchar(8) 不为空,
主键 (id)
) ENGINE=MyISAM 默认字符集=latin1 ;

我想像这样工作……

INSERT INTO table
SET img1='$img1', ext1='$ext1', img2='$img2', ext2='$ext2'
WHERE id='$id'; 

示例如下(抱歉,没有直接图像输入的代表。):
这就是现在 的表现 ------> http://i.imgur.com/AkYCzLz.png
这就是 我希望它的工作方式 -> http://i.imgur.com/0FH4Iqq.png

但我无法正常工作。到目前为止,我已经保存了他们两个 - 但使用不同的 ID。我想,如果我的 id 是固定的,它会 post 正确。我的'id'是主键。 那是我的代码:

$table = "mytable";

if(isset($_FILES['image1'])){
  $id = mysql_real_escape_string(htmlspecialchars($_POST['id']));
  $errors=array();
  $file_name1= $_FILES['image1']['name'];
  $file_size=$_FILES['image1']['size'];
  $file_tmp1=$_FILES['image1']['tmp_name'];
  $file_type=$_FILES['image1']['type']; 

  // file type is ok?
  $file_ext1=strtolower(end(explode('.',$_FILES['image1']['name'])));
  $extensions = array("jpeg","jpg","png"); 
  if(in_array($file_ext1,$extensions )=== false){
   $errors[]="extension not allowed, please choose a JPEG or PNG file."; 
  }

  if($file_size > 2097152){
  $errors[]='File size up to 2 MB';
  }
  if(empty($errors)==true){
    move_uploaded_file($file_tmp1,"uploads/".$file_name1);
    $q = mysql_query("INSERT INTO $table SET id='$id', ext1='$file_ext1', img1='$file_tmp1'");
  }else{
    print_r($errors);
  }
}

if(isset($_FILES['image2'])){
  $id = mysql_real_escape_string(htmlspecialchars($_POST['id']));
  $errors=array();
  $file_name2= $_FILES['image2']['name'];
  $file_size=$_FILES['image2']['size'];
  $file_tmp2=$_FILES['image2']['tmp_name'];
  $file_type=$_FILES['image2']['type']; 

  // file type is ok?
  $file_ext=strtolower(end(explode('.',$_FILES['image2']['name'])));
  $extensions = array("jpeg","jpg","png"); 
  if(in_array($file_ext,$extensions )=== false){
   $errors[]="extension not allowed, please choose a JPEG or PNG file."; 
  }

  if($file_size > 2097152){
  $errors[]='File size up to 2 MB';
  }
  if(empty($errors)==true){
    move_uploaded_file($file_tmp2,"uploads/".$file_name2);
    $q = mysql_query("INSERT INTO $table SET id='$id', ext2='$file_ext', img2='$file_tmp2'");
  }else{
    print_r($errors);
  }
}

字段 idprimary key 还是 unique

通常 arable 中的一个 ID 字段每行应该有一个唯一的字段,当然除非它是一个 foreign key 引用另一个 table 的主键。

不让您的 ID 字段未编入索引且不唯一是不好的数据库设计。 此外,您需要添加有关您尝试解决的问题以及 ID 字段究竟代表什么的其他信息。

最快的破解方法是删除主键:

ALTER TABLE t MODIFY ID INT NOT NULL;
ALTER TABLE t DROP PRIMARY KEY;

但是,这不是推荐的数据库设计。