2014-03-31 135 views
0

阵列,其存储的路径/图像的名称:$wall_filenames:绑定阵列mysqli的准备语句

Array ([0] => wallpapers/2014/03/calendar-thumbnail-520x264.jpg [1] => wallpapers/2014/03/calendar-preview2-786x305.jpg)

MySQL查询的 $wall_filenames[]

内容:

$sql = "INSERT INTO walls(wall_name, wall_thumbnail_path, wall_preview1_path, 
     wall_preview2_path, wall_preview3_path, 
     upload_date, d_1280x800_path, d_1366x768_path, d_1920x1080_path, 
     p_640x960_path, p_640x1136_path, p_720x1280_path, p_768x1280_path, 
     p_1080x1920_path, t_1024x768_path, t_2048x1536_path) 
     VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 
$insert_wall = $connectDB->prepare($sql); 

所以问题是,该表包含几列。但是当我插入一次,没有必要上传我的例子中的所有文件,我只上传两个。我需要做的是将这些数组元素添加到我的表中适当的列。在这种情况下,我想要$wall_filenames[0]存储到wall_thumbnail_path$wall_filenames[1]wall_preview2_path。我不确定如何使用bind_param()将数组绑定到表中正确的列。

$insert_wall->bind_param('sss...', $wall_name, $wall_filenames[0], $wall_filenames[1], ...); 
+0

http://stackoverflow.com/a/17874410/285587的副本 –

+0

@YourCommonSense这似乎不太相似。这个问题是关于需要绑定的可变数量的列。 – Barmar

+0

@barmar确切 –

回答

0

当你调用bind_param包含数组索引。

不要存储可以计算的数据。

还有绝对没有意义在存储常数在数据库中。只要制定一些命名策略,然后摆脱所有这些路径列,并根据命名策略从磁盘检查文件。

+0

我的'$ wall_filenames [1]'包含'preview2'的路径,在这种情况下,它会将路径存储到不同的列,我猜。 – vephelp

+0

对不起,没有注意到所有具有相似名称的列。但是这个想法是一样的 - 只要把它放在参数列表的适当位置即可。 – Barmar

-1

有创意:

+0

amm我想我不会在数据库中存储数字,只是将它们用作参考。但是,是的,谢谢你使用名称而不是数字的建议。 – vephelp

+1

有一个地方可以提供建议,评论。 –

+0

@vephelp你不明白。 ** 786x305 **是存储在数据库中的号码。 Whlie在那里存储没有意义。现在明白了吗? –