2017-09-02 8 views
1

ユーザテーブルのカラム名(profile_img)から値を取得するために、ニューステーブルにカラム名(profile_img1)をユーザが提出する他の情報とともに挿入します。ここで別のテーブルの名前を持つ値を挿入する方法

は私がprofile_img1の名前は、クエリでユーザー値の後になりますが、私は、ユーザーにprofile_imgの名前を取得する方法を見つけ出すことができない、これまで

$name=$_REQUEST["title"]; 
$stdate=$_REQUEST["sdate"]; 
$endate=$_REQUEST["edate"]; 
$staddr=$_REQUEST["staddr"]; 
$addr2=$_REQUEST["staddr2"]; 
$city=$_REQUEST["city"]; 
$state=$_REQUEST["state"]; 
$zip=$_REQUEST["zip"]; 
$desc=$_REQUEST["desc"]; 
$file=$_REQUEST['photo']; 
$link=$_REQUEST["link"]; 
$user=$_REQUEST["user"]; 
$profile_img1=$_REQUEST["profile_img1"]; 
$rsvp=$_REQUEST["rsvp"];   

$query = "INSERT INTO news (fname,stdate,endate,addr1,addr2,city,state,zip,name,size,type,content,link,description,user,profile_img1,rsvp) VALUES('" . mysql_real_escape_string($name) . "','$stdate','$endate','" . mysql_real_escape_string($staddr) . "','" . mysql_real_escape_string($addr2) . "','" . mysql_real_escape_string($city) . "','$state','$zip','".str_replace([",",":","\"","\\", "/", "*"," ","$","&","?",";","'","!","(",")","|","~","<",">","=","[","]","{","}","#","^","%","=","@","+","è","é"],"",$name) ."-".$stdate."-".$file."','0',' ',' ','" . mysql_real_escape_string($link)."','" . mysql_real_escape_string($desc) . "','$user','" . mysql_real_escape_string($rsvp)."')"; 

を使用していますクエリですこの方法を使用して

$query = "INSERT INTO news (fname,stdate,endate,addr1,addr2,city,state,zip,name,size,type,content,link,description,user,profile_img1,rsvp) VALUES('" . mysql_real_escape_string($name) . "','$stdate','$endate','" . mysql_real_escape_string($staddr) . "','" . mysql_real_escape_string($addr2) . "','" . mysql_real_escape_string($city) . "','$state','$zip','".str_replace([",",":","\"","\\", "/", "*"," ","$","&","?",";","'","!","(",")","|","~","<",">","=","[","]","{","}","#","^","%","=","@","+","è","é"],"",$name) ."-".$stdate."-".$file."','0',' ',' ','" . mysql_real_escape_string($link)."','" . mysql_real_escape_string($desc) . "','$user','(SELECT profile_img FROM users WHERE username=`username`)''" . mysql_real_escape_string($rsvp)."')"; 

は、(SELECTプロフィールを読むためにニュースのテーブルでprofile_img1列が発生します。ニュースのテーブルにテーブル

ここでは、私がしようとしているものですe_img FROM users WHERE username = username)、usersテーブルでprofile_imgカラムが読み込まれるのではなく、また

は、私は2番目のINSERTクエリに追加した場合

$q2 = mysql_query("INSERT INTO news (profile_img1) SELECT profile_img FROM users WHERE username='username'"); 

クエリは、ユーザが入力されます、他のデータとは別のユーザーテーブルからのみprofile_imgを、表示するニュースのテーブルで作成される新しい行を引き起こし。

ユーザーがデータをニューステーブルに提出させ、ユーザーテーブルのユーザーイメージを行のニューステーブルに挿入し、他のデータを送信して、送信されたデータとユーザーイメージ一緒に表示されます。

あなたはより多くの明確化が必要な場合、私はあなたがすでにprofile_img1の値を持っていない

+0

LAST_INSERT_ID()を見てください – Horaciux

+0

ユーザーからの値をSQL文字列に入れないでください。パラメータを使用します。あなたがエスケープを開始した場合、なぜあなたはすべての価値を逃れていませんか? –

+0

@Horaciux試行錯誤の後、私は自分の答えを見つけました。VALUESセクションにSELECT句を追加する必要がありました – Answerme

答えて

0

を教えてください?

$profile_img1=$_REQUEST["profile_img1"]; 

とにかく、2つの挿入を行うと、もちろん2行挿入されます。

あなたはUPDATEを検索します。

最後に実行された挿入のIDを取得するmysql_insert_id()。同様に

(最後に、あなたは何をやっている知っている後):

UPDATE news SET profile_img1 = "whateveritis" where id = theidoftherowyoujustinserted 
+0

試行錯誤の後、私は自分の答えを見つけ出しました。私は試行錯誤の後、VALUESセクションにSELECT句を追加しなければならなかった – Answerme

0

短い答えは、SELECT、INSERT(...)を行うことです...

例えば

$name=$_REQUEST["title"]; 
$stdate=$_REQUEST["sdate"]; 
$endate=$_REQUEST["edate"]; 
$staddr=$_REQUEST["staddr"]; 
$addr2=$_REQUEST["staddr2"]; 
$city=$_REQUEST["city"]; 
$state=$_REQUEST["state"]; 
$zip=$_REQUEST["zip"]; 
$desc=$_REQUEST["desc"]; 
$file=$_REQUEST['photo']; 
$link=$_REQUEST["link"]; 
$user=$_REQUEST["user"]; 
$profile_img1=$_REQUEST["profile_img1"]; 
$rsvp=$_REQUEST["rsvp"];   

$query = "INSERT INTO news (fname,stdate,endate,addr1,addr2,city,state,zip,name,size,type,content,link,description,user,profile_img1,rsvp) SELECT '" . 
    mysql_real_escape_string($name) . "','$stdate','$endate','" . mysql_real_escape_string($staddr) . 
    "','" . mysql_real_escape_string($addr2) . "','" . mysql_real_escape_string($city) . "','$state','$zip','". 
    str_replace([",",":","\"","\\", "/", "*"," ","$","&","?",";","'","!","(",")","|","~","<",">","=","[","]","{","}","#","^","%","=","@","+","è","é"],"",$name) . 
    "-".$stdate."-".$file."','0',' ',' ','" . mysql_real_escape_string($link)."','" . mysql_real_escape_string($desc) . 
    "',provile_img,'" . 
    mysql_real_escape_string($rsvp)."'" . 
    " FROM users WHERE username = '{$username}'"; 

このようなものに変える必要があります。長い答えは読みやすくするために、このビット独自のエスケープ処理と再構築をしないために嘆願を含み、そして拡張によって、より簡単

INSERT INTO news (fname, stdate, profile_img1, rsvp) 
SELECT 'Bob', '2017-09-02', profile_img, 0 
FROM users 
WHERE username = 'jimbob' 

後で維持する

+0

私自身の答えを理解しました。 VALUESセクションにSELECTを追加する必要がありました – Answerme

関連する問題