从一个表创建一个下拉列表,并将所选值输入另一个表(相同的MySQL DB)

时间:2014-01-12 22:36:30

标签: php html mysql

我试图显示存储在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>

2 个答案:

答案 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注入。