2017-09-02 70 views
1

插入帶有名字的價值,我希望從我的用戶表的列名與用戶提交其他信息(profile_img)插入到我的消息表中列名(profile_img1)的值。如何從另一個表

這裏是我使用至今的查詢

$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)."')"; 

爲profile_img1在查詢用戶價值後會去的名字,但我無法弄清楚如何在用戶獲得profile_img的名字表的消息表

這裏是我一直在努力:

$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)."')"; 

使用這種方法會導致profile_img1列在新聞來讀取表(SELECT PROFIL e_img從用戶其中username = username),而不是什麼profile_img列在用戶表中讀取。

另外,如果我添加第二個INSERT查詢

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

查詢導致了新的行中只顯示來自用戶表profile_img,從其他數據的用戶會進入獨立的消息表中創建。

我希望的結果是讓用戶將數據提交給新聞表,並將來自用戶表的用戶圖像插入行中的新聞表中,並提交其他數據,以便提交數據和用戶圖像一起顯示。

如果您需要更多的澄清,請讓我知道

+0

看看LAST_INSERT_ID() – Horaciux

+0

不要把值從用戶到SQL字符串。使用參數。如果你開始逃避爲什麼你不逃避每一個價值? –

+0

@Horaciux經過試驗和錯誤我想出了我自己的答案。在試用和錯誤之後,我不得不將SELECT子句添加到VALUE部分 – Answerme

回答

0

你不已經有profile_img1價值?

$profile_img1=$_REQUEST["profile_img1"]; 

但無論如何,當然,如果你做2插入它會插入2行。

你要查找更新。

而mysql_insert_id()得到執行的最後插入的ID。

如(末,後你知道你在做什麼):

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

我想出了自己的答案。在試用和錯誤之後,我必須在VALUES部分添加一個SELECT子句 – Answerme

0

簡短的回答是做INSERT(...)SELECT ...

例如

$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

我想出了自己的答案。我不得不添加一個SELECT到VALUES部分 – Answerme