我如何 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);
}
}
字段 id
是 primary key
还是 unique
?
通常 arable 中的一个 ID
字段每行应该有一个唯一的字段,当然除非它是一个 foreign key
引用另一个 table 的主键。
不让您的 ID
字段未编入索引且不唯一是不好的数据库设计。
此外,您需要添加有关您尝试解决的问题以及 ID
字段究竟代表什么的其他信息。
最快的破解方法是删除主键:
ALTER TABLE t MODIFY ID INT NOT NULL;
ALTER TABLE t DROP PRIMARY KEY;
但是,这不是推荐的数据库设计。
我的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);
}
}
字段 id
是 primary key
还是 unique
?
通常 arable 中的一个 ID
字段每行应该有一个唯一的字段,当然除非它是一个 foreign key
引用另一个 table 的主键。
不让您的 ID
字段未编入索引且不唯一是不好的数据库设计。
此外,您需要添加有关您尝试解决的问题以及 ID
字段究竟代表什么的其他信息。
最快的破解方法是删除主键:
ALTER TABLE t MODIFY ID INT NOT NULL;
ALTER TABLE t DROP PRIMARY KEY;
但是,这不是推荐的数据库设计。