繁体   English   中英

PHP将表单数组放入MySQL数据库

[英]PHP form array into MySQL Database

好。 似乎我的PHP代码有一些问题,这困扰着我。 到目前为止,该表格一半有效,一半无效。 这是代码。

<?php
include "cgi-bin/toplinks.php"; include "cgi-bin/charsheetarrays.php"; include "cgi-bin/dropdown.php"; include "cgi-bin/connect_to_mysql.php";

if (isset($_POST['pccharname'])){
    $playerid=$_SESSION['id'];
    $pccharname=ereg_replace("[^A-Z a-z]", "", $_POST['pccharname']);
    $pcclan=$_POST['pcclan'];
    $pcfamily=$_POST['famnames'];
    $pchonor=$_POST['pchonor'];
    $pcglory=$_POST['pcglory'];
    $pcstatus=$_POST['pcstatus'];
    $pctaint=$_POST['pctaint'];
    $charconcept=ereg_replace("[^A-Z a-z]", "", $_POST['charconcept']);
    $pcmon=$_POST['pcmon'];
    $pcfamilyties=ereg_replace("[^A-Z a-z.:]", "", $_POST['pcfamilyties']);
    $pchistorytext=ereg_replace("[^A-Z a-z.:]", "", $_POST['pchistorytext']);
    $pcbelieftext=ereg_replace("[^A-Z a-z.:]", "", $_POST['pcbelieftext'])
    $pcgoalstext=ereg_replace("[^A-Z a-z.:]", "", $_POST['pcgoalstext']);
    $pchookstext=ereg_replace("[^A-Z a-z.:]", "", $_POST['pchookstext']);
    $pcstatagi=$_POST['pcstatagi'];
    $pcstatint=$_POST['pcstatint'];
    $pcstatref=$_POST['pcstatref'];
    $pcstataware=$_POST['pcstataware'];
    $pcstatstam=$_POST['pcstatstam'];
    $pcstatwill=$_POST['pcstatwill'];
    $pcstatstr=$_POST['pcstatstr'];
    $pcstatpercep=$_POST['pcstatpercep'];
    $pcstatvoid=$_POST['pcstatvoid'];
    $pcinitmodroll=$_POST['pcinitmodroll'];
    $pcinitmodkeep=$_POST['pcinitmodkeep'];
    $pcinitmodbonus=$_POST['pcinitmodbonuse'];
    $pcwoundmod=$_POST['pcwoundmod'];
    $pcarmor=$_POST['pcarmor'];
    $pctnmods=$_POST['pctnmods'];
    $pcadddisadlist=$_POST['pcaddisadlist'];
    $ssstringarr=array (ss1=>$_POST['ss0'],ss2=>$_POST['ss1'],ss3=>$_POST['ss2'],ss4=>$_POST['ss3'],ss5=>$_POST['ss4'],ss6=>$_POST['ss5'],ss7=>$_POST['ss6']);
    $ssstring=implode("~",$ssstringarr);

    for($i=0; $i<36; $i++)
    {
        $n=$i-1;
        $skillnum="skill". $n;
        $emphnum="skill". $n ."emph";
        $ranknum="skill". $n ."rank";
        $skillstringarr= array ();
        $skillemphstringarr= array ();
        $skillrankstringarr= array ();
        $skillstringarr[skillnum] = $_POST[skillnum];
        $skillemphstringarr[emphnum] = $_POST[emphnum];
        $skillrankstringarr[ranknum] = $_POST[ranknum];
    }

    $skillstring=implode("~",$skillstringarr);
    $emphstring=implode("~",$skillemphstringarr);
    $rankstring=implode("~",$skillrankstringarr);
    $pctechs=$_POST['pctechs'];
    $pcspells=$_POST['pcspells'];
    $pckata=$_POST['pckata'];
    $pckiho=$_POST['pckiho'];
    $pcworninv=$_POST['pcworninv'];
    $pcownedinv=$_POST['pcownedinv'];
    $pcnormgen=$_POST['pcnormgen'];
    $pcdamgen=$_POST['pcdamgen'];
    $pcgmnotes=$_POST['pcgmnotes'];
    $servinfolog=$_POST['servinfolog'];
    $pcdatesanc=$_POST['pcdatesanc'];
    $pcwhosanc=$_POST['pcwhosanc'];
    $pclastlogin=$_POST['pclastlogin'];
    $pcxpavail=$_POST['pccp'];

    if (($pccharname=="")||($pcclan=="---")||$famname=="---"||$famname=="Pick A Family"||($pcschool=="---")||($pcschool=="--Crab Schools--")||($pcschool=="--Crab Schools--")||($pcschool=="--Crane Schools--")||($pcschool=="--Dragon Schools--")||($pcschool=="--Lion Schools--")||($pcschool=="--Mantis Schools--")||($pcschool=="--Phoenix Schools--")||($pcschool=="--Scorpion Schools--")||($pcschool=="--Unicorn Schools--")||($pcschool=="--Imperial Schools--")||($pcschool=="--Badger Schools--")||($pcschool=="--Dragonfly Schools--")||($pcschool=="--Hare Schools--")||($pcschool=="--Monkey Schools--")||($pcschool=="--Oriole Schools--")||($pcschool=="--Ox Schools--")||($pcschool=="--Sparrow Schools--")||($pcschool=="--Tortoise Schools--")||($pcschool=="--Monk Schools--")||($pcschool=="--Ronin Schools--")||($pcschool=="--Merchant Schools")||($pcschool=="--Pick A School--"))
    {
        $errormsg = "Please correct your error";
    }else{
    $sql=mysql_query("INSERT INTO pcchars (playerid,pccharid,pccharname,pcclan,pcschool,pchonor,pcglory,pcstatus,pctaint,pchistorytext,pcbelieftext,pcgoalstext,pchookstext,charconcept,pcmon,pcfamilyties,pcstatagi,pcstatint,pcstatref,pcstataware,pcstatstam,pcstatwill,pcstatstr,pcstatpercep,pcstatvoid,pcinitmodroll,pcinitmodkeep,pcinitmodbonus,pcwoundmod,pcarmor,pctnmods,pcaddisadlist,ssstring,skillstring,emphstring,rankstring,pctechs,pcspells,pckata,pckiho,pcworninv,pcownedinv,pcgentry,damgentry,pcgmnotes,servinfolog,pcdatecreate,issanced,pcdatesanc,whosanc,pclastlogin,pcxpavail)VALUES('$playerid','$pccharid','$pccharname','$pcclan','$pcschool','$pchonor','$pcglory','$pcstatus','$pctaint','$pchistorytext','$pcbelieftext','$pcgoalstext','$pchookstext','$charconcept','$pcmon','$pcfamilyties','$pcstatagi','$pcstatint','$pcstatref','$pcstataware','$pcstatstam','$pcstatwill','$pcstatstr','$pcstatpercep','$pcstatvoid','$pcinitmodroll','$pcinitmodkeep','$pcinitmodbonus','$pcwoundmod','$pcarmor','$pctnmods','$pcaddisadlist','$ssstring','$skillstring','$emphstring','$rankstring','$pctechs','$pcspells','$pckata','$pckiho','$pcworninv','$pcownedinv','$pcgentry','$damgentry','$pcgmnotes','$servinfolog','now()','$issanced','$pcdatesanc','$whosanc','$pclastlogin','$pcxpavail')") or die (mysql_error());
    }
}else{
echo "<html><head></head><body>Please <a href='http://fiveringsonline.net/login.php'>Login</a> here. You will have to make your character again, because I haven't set it up to save.</body></html>";
}//close id set
?>

现在,由于历史和技巧,等级和内爆阵列爆破,我一无所获。 此外,adsdissads也没什么。 现在,历史记录和广告残障是文本区域,因此,从技术上讲,它们应该起作用。

我了解我的for循环我很讨厌,因为它像其他人一样在传递价值。

因此,最终,我正在寻找一些帮助以使此工作正常进行。

您的变量未正确引用:

$skillstringarr[skillnum] = $_POST[skillnum];
$skillemphstringarr[emphnum] = $_POST[emphnum];
$skillrankstringarr[ranknum] = $_POST[ranknum];

他们应该是:

$skillstringarr[$skillnum] = $_POST[s$killnum];
$skillemphstringarr[$emphnum] = $_POST[$emphnum];
$skillrankstringarr[$ranknum] = $_POST[$ranknum];

还要注意,您正在使用每个循环重新初始化数组:

$skillstringarr= array ();
$skillemphstringarr= array ();
$skillrankstringarr= array ();

您应该在循环之前执行一次此操作,以免破坏数据。

与当前问题无关,但仍然相关:请注意有关SQL注入的注释。

您需要将以下代码放在for循环之外。

$skillstringarr= array ();
$skillemphstringarr= array ();
$skillrankstringarr= array ();

因为您在for循环中有此代码,该数组将每次都被重置,并且最终将一无所有,这就是为什么内爆为空的原因。

您还需要按照其他答案中的描述正确引用变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM