mysql 如何存储和拆分URL列表

amrnrhlw  于 2023-08-02  发布在  Mysql
关注(0)|答案(1)|浏览(92)

我需要发送一个URL列表到表单->保存在数据库中->从数据库中读取并显示在页面上。
因此,我使用new line(PHP_EOL)生成如下列表。

foreach ( $filenames as $filename ) {
    $uri .= trailingslashit( IPFS_URL ) . trailingslashit( $ipfs_file_cid ) . $filename . PHP_EOL;
}

<input type="hidden" id="uri" name="uri" value="<?php echo esc_attr( $uri ); ?>" />

字符串
输入值通过WP update_post_meta函数存储在MySQL数据库中。我尝试通过preg_split("/\r\n|\n|\r/", $post_meta['uri'][0]);从db阅读值,但似乎无法检测到新行。
什么是最好的方式来存储和分割的URL到一个数组?我想使用逗号,但URL可能在文件名中有逗号,如https://example.com/my,image.png(用户上传的文件)。

u2nhd7ah

u2nhd7ah1#

我不确定创建隐藏的输入,只是让他们发送回服务器,是最好的方法。如果数据已经以某种格式在服务器上可用,并且不需要在用户界面中进行修改,那么也许可以直接保存到数据库,而不必处理来自HTML表单的GET或POST数据。
但是,如果您确实有很好的理由使用表单,则可以将表单元素用作数组:

foreach ( $filenames as $index => $filename ) {
    $uri = trailingslashit( IPFS_URL ) . trailingslashit( $ipfs_file_cid ) . $filename;
    echo sprintf(
        '<input type="hidden" id="uri_%s" name="uri[]" value="%s" />',
        $index,
        esc_attr( $uri )
    );
}

字符串
那么$_POST['uri']$_GET['uri']将是一个数组。
正如@alexey-novikov在上面指出的,update_post_meta(…)应该序列化一个数组值,以便存储在数据库中。

相关问题