大まかな流れとしましては
1.ユーザー側にファイルを選択してもらい、任意のファイルをアップロードさせる
2.アップロードしたファイルを、
move_uploaded_file関数等でコピー(保存)させる。
とりあえず、まずユーザー側からファイルを選択し、アップロードするフォームを作ります。
- <form action="upload.php" method="post" enctype="multipart/form-data">
- <input type="file" name="up" />
- <input type="submit" value="アップロード" />
- </form>
仮にですが、こんな感じで。
次に、アップロードしたファイルを受け取り、処理をするphpを作る事になりますが、
えーと上の例で言うとupload.phpという名前になりますが、2行目の「typeに
fileを指定したinputタグのname」が肝です。
ここではname="up"として、upという名前を使っています。
この場合、$_FILES['up']という変数に色々とアップロードされたファイルに関しての情報が格納されているのですが、
$_FILES['up']['tmp_name']の内容をコピーして残せばOKです。
(アップロードされたファイルというのは一時的に残りはするものの、即座に消えるので、消える前に任意の場所にコピーするような要領)
- $uploadfile = "(ファイルを保存しておきたい場所のパス&ファイル名)";
- move_uploaded_file($_FILES['up']['tmp_name'], $uploadfile);
上のように書けば、$uploadfileで設定した場所、名前で保存されているはずです。
名前が重複すると困るでしょうから、ファイル名には現在時刻だったり固有IDだったりをうまく設定して工夫するといいと思います。

SQLインジェクション対策は時と場合で使う関数が変わります。その時にあったものを使いましょう。