テキストエリア情報と画像を同時に MySQLにアップロードするフォームがあります。
Textareaは、Imageはコピーで ある必要があります。内で取得しようとしました; を返します。iD
AUTO_INCREMENT
iD
textarea's
$_POST
lastInsertId()
Fatal error: Call to undefined function lastInsertId()
これは、関数および/またはクエリに情報をアップロードする isset の現在のコードです。
if(isset($_POST['update']) && isset($_FILES['photo1'])){
$update = $_POST['update'];
$data = $Wall->Insert_Update( $uiD, $update);
$name = $_FILES['photo1']['name'];
$tmp_name = $_FILES['photo1']['tmp_name'];
$target = "uploads/". $_FILES['photo1']['name'];
if (move_uploaded_file($tmp_name,$target)) {
$sth = $db->prepare("SELECT post_iD FROM posts WHERE uid_fk = :uiD");
$sth->execute(array(':uiD' => $uiD));
$post_iD = lastInsertId();
$sth = $db->prepare('INSERT INTO user_uploads (image_path, uid_fk, image_id_fk) VALUES (:image_path, :uiD, :image_id_fk)');
$sth->execute(array(':image_path' => $target, ':uiD' => $uiD, ':image_id_fk' => $post_iD));
}
}
テキストエリアをアップロードしている Insert_Update は次のとおりです。
PUBLIC FUNCTION Insert_Update( $uiD, $update){
$sth = $this->db->prepare("SELECT post_iD,message FROM posts WHERE uid_fk = :uiD ORDER by post_iD DESC LIMIT 1");
$sth->execute(array(':uiD' => $uiD));
$result = $sth->fetch();
if ($update!=$result['message']){
$sth = $this->db->prepare("INSERT INTO posts ( message, uid_fk, ip, created) VALUES ( :update, :id, :ip, :time)");
$sth->execute(array(':update' => $update, ':id' => $uiD, ':ip' => $_SERVER['REMOTE_ADDR'], ':time' => time()));
$sth = $this->db->prepare("
SELECT M.post_iD, M.uid_fk, M.message, M.created, U.username
FROM Posts M, users U
WHERE M.uid_fk=U.uiD
AND M.uid_fk = ?
ORDER by M.post_iD DESC LIMIT 1");
$sth->execute(array($uiD));
$result = $sth->fetchAll();
return $result;
} else {
return false;
}
}
形:
<form method="POST" action="" enctype="multipart/form-data">
<textarea name="update" id="update" class="_iType"></textarea>
<input type="file" name="photo1">
<input type="submit" value="post" class="update_button">
</form>
役立つとは思えないデータベース内の詳細情報。
posts table
: テキストエリア情報が配置される場所。*post_iD | メッセージ | uid_fk | ip | 作成 |*
user_uploads table
: イメージの場所が配置される場所。*image_iD | イメージパス | uid_fk | image_id_fk*
注意:image_id_fk
等しいはずpost_iD
です(これは明らかです)。
どうですかlastInsertId()
; 使用されると思いますか?
編集 1: アップロードが完了した後、image_id_fk に挿入された値は、post_iD 値ではなく 0 になります。この理由についてのアイデアはありますか?