我有一个已经包含用户ID的表,但是缺少一些信息,这是我需要用户自己输入的地方。使用表单的URL我有他们的ID ... winnerpage.php?ID = 123
我遇到麻烦让代码工作。任何帮助都会很棒!
这是winspage.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>';
}
?>
答案 0 :(得分:1)
1)
ID:<input name="ID" type="text" value="<?=$ID?>" /><br/>
你从哪里得到这个$ ID?
你在做$_GET['ID']
之类的事情还是依赖safe_mode开启? (从你提供的代码中不清楚)
(更好的是,if(isset($_GET['ID'])) { $ID = (int)$_GET['ID'] }
2)请不要那样做。不要使用addslashes()。使用mysql_real_escape_string()或更好的prepared statements. 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());
答案 1 :(得分:1)
也许试试:
mysql_query("UPDATE winner SET FN='$sFN', LN='$sLN', EM='$sEM', PH='$sPH' WHERE ID=$sID") or die (mysql_error());
答案 2 :(得分:0)
mysql_query('UPDATE winner SET FN=$sFN, LN=$sLN, EM=$sEM, PH=$sPH WHERE ID=$sID')
查询由单引号封装,因此不会解析内部变量。
答案 3 :(得分:0)
乍一看我会说你需要:
1)引用标记围绕您插入表格的某些值(例如任何字符串)
2)当你试图在结尾回显它们时,引用标记围绕着字段的名称(例如$link['ID']
)