【问题标题】:correct minor mistakes in my php and mysql code纠正我的 php 和 mysql 代码中的小错误
【发布时间】:2015-03-07 03:58:20
【问题描述】:

问题: 将 dept_no 的值插入 emp 表时出现问题。在 dept 表中无法插入值 dept_no 已成功插入

  • Emp (emp_no,emp_name,address,phone,salary,dept_no)
  • 部门(部门编号、部门名称、位置)
  • Dept-Emp 与一对多关系相关。为上述创建一个关系数据库并执行以下操作:

使用上面的数据库编写 PHP 脚本:

  1. 将员工记录和部门记录插入到相应的表中。
  2. 以下面给出的格式打印给定部门的工资报表。 (接受用户的部门名称)。

我的代码..

<?php

    if(isset($_POST['submit'])){
    //first name of employee
    if($_SERVER['REQUEST_METHOD'] == 'POST'){
    //to collect errors in an array
    $errors = array();
    //employee's id
    if(empty($_POST['emp_no'])){
    $errors[] = "Please enter employee number!";
    }else{
    $emp_no = trim($_POST['emp_no']);
    }
    //department number
    if(empty($_POST['dep_no'])){
    $errors[] = "Please enter employee number!";
    }else{
    $dep_no = trim($_POST['dep_no']);
    }
    //department name
    if(empty($_POST['dep_name'])){
    $errors[] = "Please enter department name!";
    }else{
    $dep_name = trim($_POST['dep_name']);
    }
    //department location
    if(empty($_POST['dep_location'])){
    $errors[] = "Please enter department location!";
    }else{
    $dep_location = trim($_POST['dep_location']);
    }
    //employee's first name
    if(empty($_POST['first_name'])){
    $errors[] = "Please enter first name!";
    }else{
    $first_name = trim($_POST['first_name']);
    }
    //employees last name
    if(empty($_POST['last_name'])){
    $errors[] = "Please enter last name!";
    }else{
    $last_name = trim($_POST['last_name']);
    }
    //employees address
    if(empty($_POST['address'])){
    $errors[] = "Please enter address!";
    }else{
    $address = trim($_POST['address']);
    }
    //employees phone
    if(empty($_POST['phone'])){
    $errors[] = "Please enter phone number!";
    }else{
    $phone = trim($_POST['phone']);
    }
    //employees salary
    if(empty($_POST['salary'])){
    $errors[] = "Please enter phone number!";
    }else{
    $salary = trim($_POST['salary']);
    }
    //check if no errors
    if(empty($errors)){
    require('dep_emp.php');
    }

    }
?>

<form action="emp_print.php" method="POST">
<p>Employee Form</p>
<p>Employee Number <input type="number" name="emp_no" value="<?php  if(isset($_POST['submit']))echo $_POST['emp_no']; ?>"/></p>
<p>Department Number <input type="number" name="dep_no" value="<?php if(isset($_POST['submit']))echo $_POST['dep_no']; ?>"/></p>
<p>Department Name <input type="text" name="dep_name" value="<?php if(isset($_POST['submit']))echo $_POST['dep_name']; ?>"/></p>
<p>Department Location <input type="text" name="dep_location" value="<?php if(isset($_POST['submit']))echo $_POST['dep_location']; ?>"/></p>
<p>First Name <input type="text" name="first_name" value="<?php if(isset($_POST['submit']))echo $_POST['first_name']; ?>"/></p>
<p>Last Name <input type="text" name="last_name" value="<?php if(isset($_POST['submit']))echo $_POST['last_name']; ?>"/></p>
<p>Address <input type="text" name="address" value="<?php if(isset($_POST['submit']))echo $_POST['address']; ?>"/></p>
<p>Phone Number <input type="text" name="phone" value="<?php if(isset($_POST['submit']))echo $_POST['phone']; ?>"/></p>
<p>Salary <input type="number" name="salary" value="<?php    if(isset($_POST['submit']))echo $_POST['salary']; ?>"/></p>    
<p><input type="submit" name="submit" value="Insert"/></p>

</form>

dep_emp.php

<?php

//connect to the database
$dbc = @mysqli_connect('localhost','root','black98765','activity_7a')
       OR die("Could not connect to MySQL: ".mysqli_connect_error());

//insert values into department table
$q2 = "INSERT INTO dept (dept_no,dept_name,location)
VALUES ($dep_no,'$dep_name','$dep_location')";
//insert values to employee table
$q = "INSERT INTO emp      (emp_no,dept_no,first_name,last_name,address,phone,salary)
VALUES ($emp_no,$dep_no,
'$first_name','$last_name','$address','$phone',$salary)";       
$r = mysqli_query($dbc,$q);
$r2 = mysqli_query($dbc,$q2);
if($r && $r2){
echo "<p>Successfully Inserted!</p>";
}else{
echo "<p>System Error!</p>
<p>Data are not been inserted!</p>";
echo "<p>".mysqli_error($dbc)."</p>";
}
mysqli_close($dbc); 
?>

【问题讨论】:

  • 请帮我完成这项活动,因为我很难隔离问题,谢谢
  • 您的条件语句丢失{}
  • 感谢回复我收到此错误。系统错误!数据未插入!无法添加或更新子行:外键约束失败 (activity_7a.emp, CONSTRAINT emp_ibfk_1 FOREIGN KEY (dept_no) REFERENCES dept (dept_no))

标签: php database


【解决方案1】:

为什么在这里使用 select 语句?

'SELECT dept_no FROM dept where dept_no = $dep_no'

您不只是选择刚刚插入到部门表中的完全相同的值吗?为什么不只是

VALUES ($emp_no,$dep_no,'$first_name'...

我是 php 新手,所以在这里很容易出错...

【讨论】:

    【解决方案2】:

    试试这个...

    $q2 = "INSERT INTO dept (dept_no,dept_name,location)
    VALUES ('$dep_no','$dep_name','$dep_location')";
    
    $q= "INSERT INTO emp SET emp_no='$emp_no',dept_no='$dep_no',first_name='$first_name',last_name='$last_name',address='$address',phone='$phone',salary='$salary'"
    

    【讨论】:

    • 是的,它现在可以工作了,但是当我输入相同的 dep_no 时,输出将是系统错误!没有插入数据!。因为这是一对多的关系,所以我想使用相同的 dep_no。我怎样才能摆脱该消息..谢谢
    • 同一个部门不是我看不懂
    • dept 表的主键为 dep_no,emp 表的主键为 emp_no,外键为 dept 表的 dep_no。
    • 感谢您的回复,它正在工作,但是当我第一次输入表单中的所有值时仍然存在问题,消息将显示成功插入,请参阅上面的 dep_emp.php - 但是当我插入相同的值到 dept_no 不同的名称salary 等。在表单中消息现在更改为系统错误!数据未插入。但是值 name,salary 被插入到 emp 表中......我现在想摆脱这些消息。如何做到这一点,谢谢
    • 我认为你在你的 mysql 表中为 dept_no 设置了唯一的。检查你的表并删除唯一的属性
    猜你喜欢
    • 2017-09-28
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    相关资源
    最近更新 更多