如何使用mysql在php文件夹中快速更改图像名称?

时间:2012-05-18 22:12:16

标签: php mysql image

我有一个图像文件夹,其中有近200张图像。我的图片名称是:

101.png
102.png
103.png
(it continues until 300.png)

这些图像是我的书在mysql数据库中的图像。例如;

id | book_name
101| aaaaa
102| bbbbb

所以,我想将图片名称更改为图书名称。也就是说,“aaaa”书的图像名称将是aaaa.png而不是101.png。有没有快速的方法来做到这一点? 感谢....

3 个答案:

答案 0 :(得分:2)

这是一个简单的例子:

$db = new PDO('mysql:host=myhost;dbname=mydb', 'myuser', 'mypass');
$books = $db->query('SELECT * FROM books');
$images_folder = '/var/bookimages/';

foreach ($books as $book) {
    $old_image_file = realpath($images_folder.$book['id'].'.jpg');
    if ($old_image_file) {
        $clean_book_name = filter_var($book['book_name'], FILTER_SANITIZE_ENCODED);
        $new_image_file = realpath($images_folder).$clean_book_name.'.jpg';
        rename($old_image_file, $new_image_file);
    }
}
  • PDO处理与数据库的交互。它是连接PHP数据库的首选方式。
  • 仅当原始名称和目标名称是同一磁盘中的文件时,rename()功能才有效。在你的情况下,这应该工作正常。
  • 我在数据库上使用了一个非常简单的查询。通常,您需要限制它并指定所需的列。
  • 我正在使用filter_var来检查数据库中的名称是否有效。这是一项安全措施。如果数据库的文件名包含“../”,则该文件不会做坏事。这是必要的,因为rename()也可以移动文件,有人可能会利用它。

答案 1 :(得分:1)

这是一个概念证明。它应该让你开始。

$books = array('100' => 'grapes of wrath', '101' => 'where the red fern grows');

echo '<pre>'; print_r($books); echo '</pre>';

foreach($books AS $key => $value){
    $current_image = $key.'.jpg';
    $new_image = $value.'.jpg';
    echo $current_image.' & '.str_replace(" ", "_",$new_image).'<br />';
    //rename($current_image, $new_image);
}

答案 2 :(得分:0)

将图像名称更改为书籍名称是不好的做法。 如果您的名字有特殊符号怎么办?如果名字太长会怎么样?

这是使用ID的更简单和通用的解决方案。