我有一个两步注册,一个包含重要数据,如电子邮件用户名和密码,另一个包含个人信息,如生物,眼睛颜色等。我有2个exec文件,这些,第一个将数据写入数据库的第一部分,将30列个人数据留空。第二行又做了一行,但现在重要的数据是空的..我想追加,或加入这两行,所以所有信息都在一行..
这是第二个
$qry = "UPDATE `performers` SET `Bemutatkozas` = '$bemuatkozas', `Feldob` = '$feldob', `Lehangol` = '$lehangol', `Szorzet` = '$szorzet', `Jatekszerek` = '$jatek', `Kukkolas` = '$kukkolas', `Flort` ='$flort', `Szeretek` = '$szeretek', `Utalok` = '$utalok', `Fantaziak` = '$fantaziak', `Titkosvagyak` = '$titkos_vagyak, `Suly` = '$suly', `Magassag` = '$magassag', `Szemszin` = '$szemszin', `Hajszin` = '$hajszin', `Hajhossz` = '$hajhossz', `Mellboseg` ='$mellboseg', `Orarend` = '$orarend', `Beallitottsag` = '$szexualis_beallitottsag', `Pozicio` = '$pozicio', `Dohanyzas` = '$cigi', `Testekszer` = '$pc', `Tetovalas` ='$tetko', `Szilikon` ='$szilikon', `Fetish1` = '$pisiszex', `Fetish2` = '$kakiszex', `Fetish3` = '$domina', `Testekszerhely` = '$pchely', `Tetovalashely` = '$tetkohely', `Csillagjegy` = '$csillagjegy', `Parral` = '$par', `Virag` = '$virag' WHERE `Username` ='" . $_POST['username']. "'";
$result = @mysql_query($qry);
//Check whether the query was successful or not
if($result) {
header("location: perf_register_success.php");
exit();
我不确定$ _POST是否适用于此处。我有表单,然后是那个表单的exec,它工作,然后这个表单,这是那个的exec ..无论如何我总是得到“查询失败”的消息,这是在'if'我的else语句中'正在使用。我究竟做错了什么? 谢谢!
答案 0 :(得分:1)
第二次查询需要UPDATE
而不是INSERT
。
除此之外,你真的需要修复sql注入错误,最好是通过切换到PDO或mysqli与预准备语句一起使用。不推荐使用mysql_*
函数。
无论你采取什么解决方案,都需要添加适当的错误处理,抑制错误是错误的,特别是当你尝试修复问题时,即使在生产站点中,也需要记录错误,而不是忽略错误。
答案 1 :(得分:1)
UPDATE的正确语法如下:
UPDATE table SET columnA=valueA, columnB=valueB WHERE condition=value
因此,您的查询应如下所示:
$qry = "UPDATE performers SET Bemutatkozas = $bemuatkozas, Feldob = $feldob, Lehangol = $lehangol [...] WHERE Username ='" . $_POST['username']. "'
你必须用你的所有价值取代[...](这需要一些时间),但希望你能得到这种模式。
除此之外,您应该对代码进行改进或更改,但我会在这个问题中指出jeroen answer,因为他几乎涵盖了所有内容。