0

私はこのチュートリアルに従っていますが、うまく機能しますが、各イメージのパスをmysqlデータベースに保存したいと考えています。私のコードは

$upload_dir = 'uploads/';
$allowed_ext = array('jpg','jpeg','png','gif');


if(strtolower($_SERVER['REQUEST_METHOD']) != 'post'){
exit_status('Error! Wrong HTTP method!');
 }


if(array_key_exists('pic',$_FILES) && $_FILES['pic']['error'] == 0 ){

$pic = $_FILES['pic'];

if(!in_array(get_extension($pic['name']),$allowed_ext)){

            exit_status('Only '.implode(',',$allowed_ext).' files are allowed!');
}   

if(move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name'])){


    exit_status('File was uploaded successfuly!');
}

 }

 exit_status('Something went wrong with your upload!');


// Helper functions

function exit_status($str){
echo json_encode(array('status'=>$str));
exit;
}

function get_extension($file_name){
$ext = explode('.', $file_name);
$ext = array_pop($ext);
return strtolower($ext);
}

ファイルをループして mysql データベースへのパスを挿入する最良の方法は何でしょうか?

4

1 に答える 1

0

質問の性質上、アップロードされた画像の名前を格納するテーブルを作成することから始めます。

CREATE TABLE IF NOT EXISTS `images` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;  

上記のテーブルにはこれらのいくつかのフィールドしかありませんが、さらに多くのフィールドが必要だと思われる場合は、後でいつでもテーブルにフィールドを追加できます。
次に、PHP の部分です。

$upload_dir = 'uploads/';
$allowed_ext = array('jpg','jpeg','png','gif');

// create the PHP Data Object to communicate with your MySQL database
$host = 'localhost';
$dbname = 'db_name';  // the database name in which you've created the above table  
$user = 'username';  // replace with your username
$pass = 'password';  // same goes for password
$db = new PDO("mysql:host=$host;db=$dbname", $user, $pass);  

if(strtolower($_SERVER['REQUEST_METHOD']) != 'post'){
    exit_status('Error! Wrong HTTP method!');
}

if(array_key_exists('pic',$_FILES) && $_FILES['pic']['error'] == 0 ){

    $pic = $_FILES['pic'];

    if(!in_array(get_extension($pic['name']),$allowed_ext)){
        exit_status('Only '.implode(',',$allowed_ext).' files are allowed!');
    }   

    if($demo_mode){

        // File uploads are ignored. We only log them.

        $line = implode('       ', array( date('r'), $_SERVER['REMOTE_ADDR'], $pic['size'], $pic['name']));
        file_put_contents('log.txt', $line.PHP_EOL, FILE_APPEND);

        exit_status('Uploads are ignored in demo mode.');
    }

    // Move the uploaded file from the temporary
    // directory to the uploads folder:

    if(move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name'])){
        // now insert the data in the database
        $stm = "INSERT INTO images (name,date) VALUES (:name,:date)";
        $query = $db->prepare($stm);
        $query->execute(array(':name'=>$pic['name'], 
                              ':date'=>date("Y-m-d H:i:s", time())
                              )
                        );
        exit_status('File was uploaded successfuly!');
    }

}

exit_status('Something went wrong with your upload!');

// Helper functions
// .....
于 2012-09-01T11:10:03.097 に答える