2

member.php で、ユーザーがアップロードしたプロフィール写真を表示したい。

//$profile_data grabs the users data within the database

               <h1><?php echo $profile_data['Name']; ?>'s profile:</h1>

                <?php if (empty($profile_data['profile']) === false) {
                        echo '<img src="',$profile_data['profile'], '" alt="',$profile_data['Name'],'\'sProfile Image">';

                    }
                ?>

                <div class="profile">
                    <?php 
                    if(isset($_FILES['profile']) === true) {
                        if (empty($_FILES['profile'] ['name']) === true)  {
                            echo 'Please choose a file!';
                        }else{
                            $allowed = array('jpg','jpeg','gif','png');

                            $file_name = $_FILES['profile']['name'];
                            $file_extn = explode('.', $file_name); 
                            $file_extn = strtolower(end($file_extn));//converts string to lowercase
                            $file_temp = $_FILES['profile']['tmp_name'];

                            if (in_array ($file_extn, $allowed) === true) {
                                //upload
                                change_image($MemberID,$file_temp,$file_extn);
                            }else {
                                echo 'Incorrect file type. Allowed: ';
                                echo implode(', ', $allowed);
                            }
                        }
                    }


                    ?> 

user.php には、次の関数があります。

function change_image ($MemberID, $file_temp, $file_extn) {
    $file_path = 'images/profile/' . substr(md5(time()), 0, 10) . '.' . $file_extn; //take current time, create md5 hash, 10 character figure 
    move_uploaded_file($file_temp, $file_path);
    mysql_query("UPDATE `member` SET `profile` = '" . mysql_real_escape_string($file_path) . "' WHERE 'MemberID' = " . (int)$MemberID);//update database

    echo "UPDATE `member` SET `profile` = '" . mysql_real_escape_string($file_path) . "' WHERE `MemberID` = " . (int)$MemberID;
}

ユーザーとしてログインして画像をアップロードしても何も起こりません。データベースは更新されませんが、クエリをエコーすると問題ないように見えます。

UPDATE `member` SET `profile` = 'images/profile/2d5929413b.jpg' WHERE `MemberID` = 31

クエリをphpmyadminに入れると正常に動作し、ファイルパスがそこにあり、ユーザーは画像を持っていますが、画像を変更するとクエリは更新されますが、データベース内のファイルパスは変更されません。

本当に混乱しています、何か助けてください??

4

1 に答える 1

0

コンマを削除し、次のようにドットに置き換えます。

<?php if (empty($profile_data['profile']) === false) {
                        echo '<img src="'.$profile_data['profile']. '" alt="'.$profile_data['Name'].'\'sProfile Image">';
                    echo $profile_data['profile'];
                    }
                ?>

クエリから INT を削除し、MemberID を囲むコンマを削除します。

mysql_query("UPDATE `member` SET `profile` = '" . mysql_real_escape_string($file_path) . "' WHERE MemberID = " . $MemberID) ;//update database
于 2013-04-02T17:03:18.280 に答える