Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php explode()将数组存储到mySQL中_Php_Mysql - Fatal编程技术网

使用php explode()将数组存储到mySQL中

使用php explode()将数组存储到mySQL中,php,mysql,Php,Mysql,我正在为车展制作一个网站,我想在数据库中存储图像(只是URL),我想做的是将所有图像添加到表中的同一单元格中 然后在检索时,我想在php中使用explode()命令,这样我就可以分离每个URL并使用循环来显示它们 我面临的问题是,我不知道应该使用什么作为分隔符,我不能使用任何可以在windows、mac或Linux中使用的文件名,我担心使用系统保留密钥会导致问题。 我还担心保存这些信息的数据类型,我认为文本在这里是最好的,但我听到很多人说它会导致问题 明确地说,这个想法是: 当有人上传3张图片时

我正在为车展制作一个网站,我想在数据库中存储图像(只是URL),我想做的是将所有图像添加到表中的同一单元格中

然后在检索时,我想在php中使用explode()命令,这样我就可以分离每个URL并使用循环来显示它们

我面临的问题是,我不知道应该使用什么作为分隔符,我不能使用任何可以在windows、mac或Linux中使用的文件名,我担心使用系统保留密钥会导致问题。 我还担心保存这些信息的数据类型,我认为文本在这里是最好的,但我听到很多人说它会导致问题

明确地说,这个想法是:

当有人上传3张图片时,这些图片将被上传到一个文件夹中,然后这些名称将被提取并放入一个字符串中(在添加目录名称之后),在它们之间加一个分隔符,然后存储在数据库中。 然后,我使用这个字符串,使用explode()将分离的数据存储在一个数组中,并使用一个循环来显示一个图像,其中源是数组中存储的数据

我需要一个特殊的分隔符或其他方式。。。有人能帮我做这件事吗?或者告诉我另一种保存图像的方法,而不会有潜在的风险!我见过很多网站使用动态要点(列表),但我从来没有得到一个代码,甚至是一个如何做他们的想法

编辑:

$array = array(
    '/path/to/file/1',
    '/path/to/file/2',
    '/path/to/file/3'
);

foreach($array as $path) {
    $path = $path . '|';
    mysqli_query($connect, "INSERT INTO files (path) VALUES ('$path');
}
$query = mysqli_query($connect, "SELECT path FROM files");
$row = mysqli_fetch_assoc($query);
$paths = explode('|', $row['path']);
    foreach($paths as $path) {
    echo $path . '<br>';
}

我目前使用的方法是10行,每个图像1行。。但是这里的问题是,用户不能添加超过10个图像,如果他有少于10个图像,那么将很少显示空图像。(我知道空图像的解决方案,但无法添加更多图像。)

如果由于任何技术原因,无法在单独的表中存储每个图像的一行,然后,您应该对图像路径上的数组进行
json\u编码,并将结果存储在数据库中。

如果由于任何技术原因,无法将每个图像的一行存储在单独的表中,然后,您应该对图像路径上的数组进行
json\u编码,并将结果存储在数据库中。

如果您不更改数据库,则应该尝试。我认为下面的链接对您很有用

你可以用任何人

如果你把桌子设计成

 Table-user

  user_id
  username
另一个用于用户图像的表

Table-images

serial_num
user_id
image_url
然后可以为一个用户存储多个图像。这里图像表的用户id实际上是用户表的用户id的外键。
您正在使用,所以它对您有好处,否则您可以使用数据库

如果您不更改数据库,那么您应该尝试。我认为下面的链接对您有用

你可以用任何人

如果你把桌子设计成

 Table-user

  user_id
  username
另一个用于用户图像的表

Table-images

serial_num
user_id
image_url
然后可以为一个用户存储多个图像。这里图像表的用户id实际上是用户表的用户id的外键。
您正在使用,因此它对您有好处,否则您可以使用数据库解决方案一:

$array = array(
    '/path/to/file/1',
    '/path/to/file/2',
    '/path/to/file/3'
);

foreach($array as $path) {
    $path = $path . '|';
    mysqli_query($connect, "INSERT INTO files (path) VALUES ('$path');
}
$query = mysqli_query($connect, "SELECT path FROM files");
$row = mysqli_fetch_assoc($query);
$paths = explode('|', $row['path']);
    foreach($paths as $path) {
    echo $path . '<br>';
}
创建一个名为
Images
的表,该表包含3列(
id
image\u path
user\u id
),每次用户上载图像时,将其插入该表中,如果要显示指定用户的上载,请在脚本中通过
user\u id

$user_id = 1 // The specified user id;
mysqli_query($connect, "SELECT * FROM images WHERE user_id = '$user_id'");
    // And Loop here trough images
解决方案二:

$array = array(
    '/path/to/file/1',
    '/path/to/file/2',
    '/path/to/file/3'
);

foreach($array as $path) {
    $path = $path . '|';
    mysqli_query($connect, "INSERT INTO files (path) VALUES ('$path');
}
$query = mysqli_query($connect, "SELECT path FROM files");
$row = mysqli_fetch_assoc($query);
$paths = explode('|', $row['path']);
    foreach($paths as $path) {
    echo $path . '<br>';
}
将图像路径插入到一列中

files
包含一列名为
path

将值插入
文件
表:

$array = array(
    '/path/to/file/1',
    '/path/to/file/2',
    '/path/to/file/3'
);

foreach($array as $path) {
    $path = $path . '|';
    mysqli_query($connect, "INSERT INTO files (path) VALUES ('$path');
}
$query = mysqli_query($connect, "SELECT path FROM files");
$row = mysqli_fetch_assoc($query);
$paths = explode('|', $row['path']);
    foreach($paths as $path) {
    echo $path . '<br>';
}
现在显示结果:

$array = array(
    '/path/to/file/1',
    '/path/to/file/2',
    '/path/to/file/3'
);

foreach($array as $path) {
    $path = $path . '|';
    mysqli_query($connect, "INSERT INTO files (path) VALUES ('$path');
}
$query = mysqli_query($connect, "SELECT path FROM files");
$row = mysqli_fetch_assoc($query);
$paths = explode('|', $row['path']);
    foreach($paths as $path) {
    echo $path . '<br>';
}
$query=mysqli\u query($connect,“从文件中选择路径”);
$row=mysqli\u fetch\u assoc($query);
$path=分解(“|”,$row['path']);
foreach($path作为$path){
回显$path。“
”; }
解决方案一:

$array = array(
    '/path/to/file/1',
    '/path/to/file/2',
    '/path/to/file/3'
);

foreach($array as $path) {
    $path = $path . '|';
    mysqli_query($connect, "INSERT INTO files (path) VALUES ('$path');
}
$query = mysqli_query($connect, "SELECT path FROM files");
$row = mysqli_fetch_assoc($query);
$paths = explode('|', $row['path']);
    foreach($paths as $path) {
    echo $path . '<br>';
}
创建一个名为
Images
的表,该表包含3列(
id
image\u path
user\u id
),每次用户上载图像时,将其插入该表中,如果要显示指定用户的上载,请在脚本中通过
user\u id

$user_id = 1 // The specified user id;
mysqli_query($connect, "SELECT * FROM images WHERE user_id = '$user_id'");
    // And Loop here trough images
解决方案二:

$array = array(
    '/path/to/file/1',
    '/path/to/file/2',
    '/path/to/file/3'
);

foreach($array as $path) {
    $path = $path . '|';
    mysqli_query($connect, "INSERT INTO files (path) VALUES ('$path');
}
$query = mysqli_query($connect, "SELECT path FROM files");
$row = mysqli_fetch_assoc($query);
$paths = explode('|', $row['path']);
    foreach($paths as $path) {
    echo $path . '<br>';
}
将图像路径插入到一列中

files
包含一列名为
path

将值插入
文件
表:

$array = array(
    '/path/to/file/1',
    '/path/to/file/2',
    '/path/to/file/3'
);

foreach($array as $path) {
    $path = $path . '|';
    mysqli_query($connect, "INSERT INTO files (path) VALUES ('$path');
}
$query = mysqli_query($connect, "SELECT path FROM files");
$row = mysqli_fetch_assoc($query);
$paths = explode('|', $row['path']);
    foreach($paths as $path) {
    echo $path . '<br>';
}
现在显示结果:

$array = array(
    '/path/to/file/1',
    '/path/to/file/2',
    '/path/to/file/3'
);

foreach($array as $path) {
    $path = $path . '|';
    mysqli_query($connect, "INSERT INTO files (path) VALUES ('$path');
}
$query = mysqli_query($connect, "SELECT path FROM files");
$row = mysqli_fetch_assoc($query);
$paths = explode('|', $row['path']);
    foreach($paths as $path) {
    echo $path . '<br>';
}
$query=mysqli\u query($connect,“从文件中选择路径”);
$row=mysqli\u fetch\u assoc($query);
$path=分解(“|”,$row['path']);
foreach($path作为$path){
回显$path。“
”; }
您可以使用任何类型的
序列化(
serialize
json\u encode
),当放置数组和
反序列化(
unserialize
json\u decode
),当需要使用时

但是我建议您为图像创建一个新表,例如使用
car\u id
字段。
然后你就可以加入它,得到一切

它可以是
CarImages('id','car\u id','image\u file')
另外,我建议在
CarImages.car\u id->Cars.id
上添加
外键约束
, 然后,当汽车被移除时,孤立图像将被级联移除


存储序列化值总是一个坏主意。

您可以使用任何类型的
序列化(
serialize
json\u encode
),当放置数组和
反序列化(
unserialize
json\u decode
),当需要使用时

但是我建议您为图像创建一个新表,例如使用
car\u id
字段。
然后你就可以加入它,得到一切

它可以是
CarImages('id','car\u id','image\u file')
另外,我建议在
CarImages.car\u id->Cars.id
上添加
外键约束