[英]PHP and MySQL form, what am I doing wrong?
我有一个表,其中已经有用户 ID,但是缺少一些信息,这就是我需要用户自己输入的地方。 使用表格的 URL 我有他们的 ID...winnerpage.php?ID=123
我无法让代码正常工作。 任何帮助都会很棒!
这是获胜者页面上的代码。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 开启? (从您提供的代码中不清楚)
(更好的是, if(isset($_GET['ID'])) { $ID = (int)$_GET['ID'] }
2)请不要那样做。 不要使用addlashes()。 使用 mysql_real_escape_string() ,或者更好的是,使用准备好的语句。 在查询的 escaping 数据中,Addslashes 并不完全可靠。
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']);
此外,在每个输入字段中添加'value=""'
(非强制性)
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']
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.