2017-09-02 67 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