【发布时间】:2017-09-02 23:08:33
【问题描述】:
我希望将用户表列名 (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 profile_img FROM users WHERE username=username),而不是读取用户表中的 profile_img 列。
另外,如果我添加第二个 INSERT 查询
$q2 = mysql_query("INSERT INTO news (profile_img1) SELECT profile_img FROM users WHERE username='username'");
该查询导致在新闻表中创建一个新行,该行仅显示用户表中的 profile_img,与用户将输入的其他数据分开。
我想要的结果是让用户将数据提交到新闻表,用户表中的用户图像将插入到新闻表中与其他数据提交的行中,因此提交的数据和用户图像是一起显示。
如果您需要更多说明,请告诉我
【问题讨论】:
-
看看 LAST_INSERT_ID()
-
不要将来自用户的值放入 SQL 字符串中。使用参数。如果您开始转义,为什么不转义每个值?
-
@Horaciux 经过反复试验,我找到了自己的答案。我必须在 VALUES 部分添加一个 SELECT 子句
-
@SamiKuhmonen 经过反复试验,我找到了自己的答案。我必须在 VALUES 部分添加一个 SELECT 子句
标签: mysql sql sql-insert