我一直在关注这个tutorial并且效果很好,但我想将每个图像的路径存储在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数据库的最佳方法是什么?
答案 0 :(得分: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
// .....