我试图显示存储在mySQL数据库的查找表中的所有国家/地区(“land”)的下拉列表,让用户选择他的国家/地区,然后将该coundtry输入到memberlist表中。
下面的代码实际上用新记录更新了成员表,但是输入到land列的值是字符串“$ landselect”(不是相应的/选定的国家/地区名称)。
我怀疑在我尝试传递HTML部分中的SELECT语句和PHP部分中的INSERT语句之间的选定值(即国家/地区名称)时出现了问题,但我不能让我了解如何将正确的值(选定的国家/地区名称)传递给INSERT语句。
非常感谢任何想法和评论。
<html>
<head>
</head>
<body>
<form action="Medlem 140112b.php" method="POST">
Username: <input type="text" name="username"><br />
Password: <input type="text" name="password"><br />
Personnummer: <input type="text" name="personnummer"><br />
First name: <input type="text" name="firstname"><br />
Last name: <input type="text" name="lastname"><br />
Postadress1: <input type="text" name="postadress1"><br />
Postadress2: <input type="text" name="postadress2"><br />
Postnummer: <input type="text" name="postnummer"><br />
Ort: <input type="text" name="ort"><br />
<!---Land: <input type="text" name="land"><br />--->
Land: <SELECT name="land"> <OPTION VALUE=0>Choose
<?php
$con = mysql_connect("localhost","root","");
mysql_select_db ("cf", $con);
$result = mysql_query("SELECT Land FROM land",$con);
while($row = mysql_fetch_array($result))
{
$landselect=$row["Land"];
echo '<OPTION VALUE=\'$landselect\'>'.$landselect.'</OPTION>';
}
mysql_close ($con); //stänger connectio till DB system;
?>
</SELECT>
<br />
Epost: <input type="text" name="epost"><br />
Telefon: <input type="text" name="telefon"><br />
TC_approval: <input type="text" name="tc_approval"><br />
<input type="submit" name="submit">
</form>
<?php
$con = mysql_connect("localhost","root","");
mysql_select_db ("cf", $con);
if (mysql_error())
{
echo "Failed to connect to MySQL: " . mysql_error();
} else echo "Koppling till DB gick bra!";
if (isset ($_POST['submit'])) {
$sql = "INSERT INTO medlem(Username, Password, Personnummer, Firstname, Lastname, Postadress1, Postadress2, Postnummer, Ort, Land, Epost, Telefon, TC_approval) VALUES('$_POST[username]','$_POST[password]','$_POST[personnummer]','$_POST[firstname]','$_POST[lastname]','$_POST[postadress1]','$_POST[postadress2]','$_POST[postnummer] ','$_POST[ort]','$_POST[land]','$_POST[epost]','$_POST[telefon]','1')";
echo $sql;
mysql_query($sql, $con); //Exekverar tabellskapandet;
}
mysql_close ($con); //stänger connectio till DB system;
?>
</body>
</html>
答案 0 :(得分:0)
更改此行:
echo '<OPTION VALUE=\'$landselect\'>'.$landselect.'</OPTION>';
到
echo '<OPTION VALUE=\'' . $landselect . '\'>'.$landselect.'</OPTION>';
如果使用双引号,您的当前代码将起作用,但单引号不是魔术引号。
答案 1 :(得分:0)
而不是
echo '<OPTION VALUE=\'$landselect\'>'.$landselect.'</OPTION>';
试试这个
echo "<OPTION VALUE='$landselect'>$landselect</OPTION>";
并尝试使用mysqli_real_escape_string()
。您当前的代码很容易被SQL注入。