这就是我想要做的事情..我得到了一个数据库的eprofile。数据库由2个表组成,即个人数据和国籍。第一个用户可以查看他们的旧个人信息,然后我将为他们进行更新/编辑页面。国籍在其他表中是因为下拉菜单中的国籍。然后用户可以更改他们的个人信息和信息,在他们插入新信息后,他们点击提交按钮并转到process.php,在那里发生数据库的更新过程。我的问题是,我不知道如何定义/或如何在更新查询中连接两个表,即personal_data和nationality。
国籍代码
<?php
$query = "SELECT nationality_type FROM nationality";
$result = mysql_query ($query); ?>
<select name="personal_nationality" >
<?php while($row = mysql_fetch_array($result)){ ?>
<option value="<?php echo $row['nationality_type']?>" <?php if ( $personal_nationality == $row['nationality_type']){ ?> selected <?php } ?>>
<?php echo $row['nationality_type']?></option>
<?php }?>
</select>
process.php代码
<?php
$host="localhost"; // test local
$username="lasadmin"; // Mysql username
$password="lasadmin"; // Mysql password
$db_name="eprofile"; // Database name
$db = mysql_connect($host, $username, $password);
$link = mysql_select_db($db_name,$db);
$personal_designation = $_POST['personal_designation'];
$personal_department = $_POST['personal_department'];
$personal_job_grade = $_POST['personal_job_grade'];
$personal_emp_group = $_POST['personal_emp_group'];
$personal_current_company = $_POST['personal_current_company'];
$personal_work_location = $_POST['personal_work_location'];
mysql_query("UPDATE personal_data SET personal_designation = '".mysql_real_escape_string($_POST["personal_designation"])."', personal_department = '".mysql_real_escape_string($_POST["personal_department"])."', personal_job_grade = '".mysql_real_escape_string($_POST["personal_job_grade"])."', personal_emp_group = '".mysql_real_escape_string($_POST["personal_emp_group"])."', personal_current_company = '".mysql_real_escape_string($_POST["personal_current_company"])."', personal_work_location = '".mysql_real_escape_string($_POST["personal_work_location"])."' WHERE LAS_login_id = '".mysql_real_escape_string($_POST["LAS_login_id"])."'");
$personal_full_name = $_POST['personal_full_name'];
$personal_title = $_POST['personal_title'];
$personal_date_birth = $_POST['personal_date_birth'];
$personal_marital_status = $_POST['personal_marital_status'];
$personal_nationality = $_POST['nationality_type'];
mysql_query("UPDATE personal_data SET personal_full_name = '".mysql_real_escape_string($_POST["personal_full_name"])."', personal_title = '".mysql_real_escape_string($_POST["personal_title"])."', personal_date_birth = '".mysql_real_escape_string($_POST["personal_date_birth"])."', personal_marital_status = '".mysql_real_escape_string($_POST["personal_marital_status"])."', nationality_type = '".mysql_real_escape_string($_POST["personal_nationality"])."' WHERE LAS_login_id = '".mysql_real_escape_string($_POST["LAS_login_id"])."'");
?>
当我尝试更改信息(测试)时,显示此错误 -Notice:未定义的索引:第26行的C:\ wamp \ www \ eprofile \ process.php中的nationality_type
这是第26行的代码
$personal_nationality = $_POST['nationality_type'];
你能告诉我这是什么问题,这个问题的解决方案是什么?我应该怎么做定义索引??
答案 0 :(得分:0)
你有两个问题......
第一个是你的UPDATE sql查询。
WHERE LAS_login_id= '$LAS_login_id'
你在哪里找到$ LAS_login_id?你没有在我能看到的任何地方定义它......
第二个问题是你的索引nationality_type
,你没有包含在上面的代码中......
希望这有帮助
答案 1 :(得分:0)
首先,我建议转义$ _POST变量收到的内容。 您无需将其复制到额外的变量中。 (除非我们将它用于不同的东西)
第二个问题是$ LAS_login_id没有初始化,没有值,所以你的UPDATE语句不会更新任何内容。
//simple update
mysql_query("UPDATE mytable SET
myvalue = '".mysql_real_escape_string($_POST["my_value"])."'
WHERE mycriteria = '".mysql_real_escape_string($_POST["my_criteria"])."'");
并且应该有一个带有nationality_type的数组作为索引,也是未定义的。