PHP和MySQL表格,我在做什么错?

问题描述

| 我有一个已经有用户ID的表,但是缺少某些信息,因此我需要用户自己输入该信息。有了表单的URL,我就在其中有他们的ID ... winnerpage.PHP?ID = 123 我在使代码正常工作方面遇到麻烦。任何帮助将是巨大的! 这是那个winnerpage.PHP上的代码
<form enctype=\"multipart/form-data\" action=\"winnerpage.PHP\" method=\"POST\">
ID: <input name=\"ID\" type=\"text\" value=\"<?=$ID?>\" /><br/>
First Name: <input type=\"text\" name=\"FN\"><br />
Last Name: <input type=\"text\" name=\"LN\"><br />
Email: <input type=\"text\" name=\"EM\"><br />
Phone: <input type=\"text\" name=\"PH\"><br />
<input type=\"submit\" name=\"edit\" value=\"edit\"></form> <br>

<?
require_once(\'MysqL_serv_inc.PHP\');

$conn = MysqL_connect(\"$MysqL_server\",\"$MysqL_user\",\"$MysqL_pass\"); 
if (!$conn) die (\"ERROR\"); 
MysqL_select_db($MysqL_database,$conn) or die (\"ERROR\"); 

if(isset($_POST[\'edit\']))
{
$sID        =    addslashes($_POST[\'ID\']);
$sFN        =    addslashes($_POST[\'FN\']);
$sLN        =    addslashes($_POST[\'LN\']);
$sEM        =    addslashes($_POST[\'EM\']);
$sPH        =    addslashes($_POST[\'PH\']);


MysqL_query(\'UPDATE winner SET FN=$sFN,LN=$sLN,EM=$sEM,PH=$sPH 
             WHERE ID=$sID\') or die (MysqL_error());

echo \'Updated!\';
}

$query = \"select * from winner order by ID\";
$result = MysqL_query($query);
?>

<?
   while ($link=MysqL_fetch_array($result))
   {
     echo \'Unique ID - Completion Time - First Name - Last Name - Email - Phone<br/>\'.$link[ID].\' -\' .$link[FN].\' - \'.$link[LN].\' - \'.$link[EM].\' - \'.$link[PH].\'<br>\';
     }
?>
    

解决方法

        1)     ID:
<input name=\"ID\" type=\"text\" value=\"<?=$ID?>\" /><br/>
您从哪里获得该$ ID?您是否正在执行类似
$_GET[\'ID\']
的操作,还是要依靠safe_mode处于ON状态? (您提供的代码尚不清楚) (更好的是,
if(isset($_GET[\'ID\'])) { $ID = (int)$_GET[\'ID\'] }
2)请不要那样做。不要使用addslashes()。使用mysql_real_escape_string()或什至更好的是准备好的语句。转义符在转义查询数据时并不是绝对可靠的。
sID    =    (int)$_POST[\'ID\'];
$sFN   =    mysql_real_escape_string($_POST[\'FN\']);
$sLN   =    mysql_real_escape_string($_POST[\'LN\']);
$sEM   =    mysql_real_escape_string($_POST[\'EM\']);
$sPH   =    mysql_real_escape_string($_POST[\'PH\']);
另外,在每个输入字段中添加“ 5”(非必填) 3)将值封装在查询中:
mysql_query(\"UPDATE winner SET FN=\'\".$sFN.\"\',LN=\'\".$sLN.\"\',EM=\'\".$sEM.\"\',PH=\'\".$sPH.\"\' WHERE ID=\'\".$sID.\"\'\") or die (mysql_error());
    ,        也许尝试:
mysql_query(\"UPDATE winner SET FN=\'$sFN\',LN=\'$sLN\',EM=\'$sEM\',PH=\'$sPH\' WHERE ID=$sID\") or die (mysql_error());
    ,        
mysql_query(\'UPDATE winner SET FN=$sFN,LN=$sLN,EM=$sEM,PH=$sPH WHERE ID=$sID\')
该查询由单引号引起来,因此不会解析其中的变量。     ,        乍一看,我会说您需要: 1)在要插入表中的某些值周围加上引号(例如,任何字符串) 2)当您尝试在末尾将它们呼出时,请在字段名称周围加上引号(例如,
$link[\'ID\']
)