如何解决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\']
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。