繁体   English   中英

如何将主键作为外键插入另一个表?

[英]How do I insert the primary key to another table as foreign key?

我有两个表tbl_carstbl_user其中tbl_useruserID作为Primary key我在tbl_cars其声明为外键,无论何时用户登录无法将项目发布到tbl_cars我都会收到此错误

无法添加或更新子行:外键约束失败(u850332371_car.tbl_cars,CONSTRAINT tbl_cars_ibfk_1外键(userID)参考tbl_user(userID))

这是我要插入的代码。

Insert.php

<?PHP
$conn = new mysqli('******', '******', '******', '******');

 if ($conn->connect_error) {
 die("Connection failed: " . $conn->connect_error);
 }

error_reporting(E_ALL);
ini_set('display_errors',1);// at top of page

if(isset($_POST['txtCarModel']) && isset($_POST['txtCarType']) && 
isset($_POST['txtCapacity']) && isset($_POST['image']) &&
isset($_POST['txtFuelType']) && isset($_POST['txtPlateNumber'])){

$now = DateTime::createFromFormat('U.u', microtime(true));
$id = $now->format('YmdHis');

$upload_folder = "upload";
$path = "$upload_folder/$id.jpeg";
$image = $_POST['image'];
$fullpath = "http://carkila.esy.es/$upload_folder/$id.jpeg";

$Car_Model = $_POST['txtCarModel'];
$Car_Type = $_POST['txtCarType'];
$Capacity = $_POST['txtCapacity'];
$Fuel_Type = $_POST['txtFuelType'];
$PlateNumber = $_POST['txtPlateNumber'];
$Image = $_POST['image'];


$stmt = $conn->prepare("INSERT INTO tbl_cars (Car_Model, Car_Type, Capacity, fuelType, carPlatenuNumber, Image) VALUES (?, ?, ?,?,?,?)");
$query = "INSERT INTO tbl_cars(Car_Model, Car_Type, Capacity,fuelType, carPlatenuNumber, Image) 
VALUES ('$Car_Model', '$Car_Type', $Capacity, '$Fuel_Type', '$PlateNumber', '$fullpath')"; 

$stmt->bind_param("ssssss", $Car_Model, $Car_Type, $Capacity,$Fuel_Type,$PlateNumber, $fullpath);
$result = $stmt->execute();

if($result === false ) {
  die('execute() failed: ' . htmlspecialchars($stmt->error));
}else{
echo "New records created successfully";
}

$stmt->close();
$conn->close();

    }


?>

更新

这是我的会话登录。 我希望将userID插入到数据库中。

login.php

<?php 
require 'database-config.php';

session_start();

$username = "";
$password = "";

if(isset($_POST['username'])){
$username = $_POST['username'];
}
if (isset($_POST['password'])) {
$password = $_POST['password'];

}


$q = 'SELECT * FROM tbl_user WHERE username=:username AND password=:password';

$query = $dbh->prepare($q);

$query->execute(array(':username' => $username, ':password' => $password));


if($query->rowCount() == 0){
header('Location: index.php?err=1');
}else{

$row = $query->fetch(PDO::FETCH_ASSOC);

session_regenerate_id();
 $_SESSION['sess_user_id'] = $row['userID'];
 $_SESSION['sess_username'] = $row['username'];
 $_SESSION['sess_userrole'] = $row['roles'];

 echo $_SESSION['sess_userrole'];
session_write_close();

if( $_SESSION['sess_userrole'] == "renter"){
echo "owner";

}else if ($_SESSION['sess_userrole'] == "owner"){
echo"renter";

}


}


?>

感谢大伙们。 :)

每当用户登录时无法发布项目...

由于您知道哪个用户正在尝试向tbl_cars添加记录, tbl_cars在插入中包含userID

$userID = ... //<- put the user id in this variable
$sql = 'INSERT INTO tbl_cars ('.
       'userID,Car_Model,Car_Type,Capacity,fuelType,carPlatenuNumber,Image'.
       ') VALUES (?, ?, ?, ?, ?, ?, ?)';

$stmt = $conn->prepare($sql);
$stmt->bind_param("sssssss", $userID $Car_Model, $Car_Type, $Capacity,
                             $Fuel_Type,$PlateNumber, $fullpath);
$result = $stmt->execute();

我相信您的问题是userID是必填字段,但是当您不提供默认值时,数据库无法为您插入默认值,因为该值必须绑定到tbl_user的主键

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM