gpt4 book ai didi

PHP、MYSQL 辅助键

转载 作者:行者123 更新时间:2023-11-29 10:22:07 25 4
gpt4 key购买 nike

我不明白我错了什么。我正在创建一个 Android 应用程序,人们注册时输入电话号码,然后在另一个事件中输入姓名,注册就完成了。问题是我有一个包含 2 个表的数据库,一个名为“Numbers”(字段为 ID 和电话号码),另一个表为“Customers”(字段为 ID、Name、Surname 和 idNumbers_fk)。我无法保存第二个表中的数据,如何管理辅助键?从某种意义上说,您与“Numbers”表的主键相关联,但我无法将其在 ID 字段中的值传递给它。我有一个 PHP 代码来将数据插入表中,但我不明白为什么它不起作用。

你能帮我吗?

这是我在数据库中的内容:名称数据库:Test1 table 数量:2

表 1:

  • 姓名表:数字
  • 字段:ID (PK) 和电话号码 (VARCHAR(20))

表 2:

  • 姓名表:顾客
  • 字段:ID (PK)、姓名 (VARCHAR(20))、姓氏 (VARCHAR(20)) 和 idNumbers_fk(外键)

这是我用于电话号码注册的 PHP 代码(有效):

<?php
if($_SERVER['REQUEST_METHOD']=='POST'){

include 'Test1config.php';

$con = mysqli_connect($HostName,$HostUser,$HostPass,$DatabaseName);

$Pnumber = $_POST['NumberPhone'];


$CheckSQL = "SELECT * FROM Numbers WHERE Phone_number='$Pnumber'";

$check = mysqli_fetch_array(mysqli_query($con,$CheckSQL));

if(isset($check)){

echo 'Number already registered';

}
else{
$Sql_Query = "INSERT INTO Numbers (Phone_number) values ('$Pnumber')";

if(mysqli_query($con,$Sql_Query))
{
echo 'Registration Successfully';
}
else
{
echo 'Something went wrong';
}
}
}
mysqli_close($con);
?>

这是给我一个错误的 PHP 文件的代码,这里我在“Costumers”表中插入数据,但它给了我一个错误,但如果我从“Costumers”表中删除外键,它会出现错误。有效,为什么?我哪里错了?

<?php

if($_SERVER['REQUEST_METHOD']=='POST'){

include_once("Test2congig.php");

$first_name = $_POST['nameC'];
$last_name = $_POST['surnameC'];


if($first_name == '' || $last_name == '' ){
echo json_encode(array( "status" => "false","message" => "Parameter missing!") );
}else{

$query= "SELECT * FROM Costumers WHERE Name='$first_name' AND Surname='$last_name'";
$result= mysqli_query($con, $query);

if(mysqli_num_rows($result) > 0){
echo json_encode(array( "status" => "false","message" => "User already exist!") );
}else{
$query = "INSERT INTO Costumers (Name,Surname) VALUES ('$first_name','$last_name')";
if(mysqli_query($con,$query)){

$query= "SELECT * FROM Costumers ";
$result= mysqli_query($con, $query);
$emparray = array();
if(mysqli_num_rows($result) > 0){
while ($row = mysqli_fetch_assoc($result)) {
$emparray[] = $row;
}
}
echo json_encode(array( "status" => "true","message" => "Successfully registered!" , "data" => $emparray) );
}else{
echo json_encode(array( "status" => "false","message" => "Error occured, please try again!") );
}
}
mysqli_close($con);
}
} else{
echo json_encode(array( "status" => "false","message" => "Error occured, please try again!") );
}

?>

最佳答案

在您的 Costumers 表中,将字段 idNumbers_fk 默认值设置为 NULL。这样,当您没有为此字段设置任何数据时,它将为 NULL,这是一个可接受的外键值。

失败的原因是默认情况下很可能会插入 0,并且您的 Numbers 表中不存在 id 为 0 的电话号码。

但是,对您的问题的更广泛的答案是,您必须将电话号码的 ID 保存在应用程序中的某个位置,以便当客户随后想要添加姓名和姓氏时,您可以同时使用该电话 ID。

像这样:

INSERT INTO Costumers (Name,Surname,idNumbers_fk) VALUES ('$first_name','$last_name', '$phoneNumberIdFromSomeSessionOrCache')

$phoneNumberIdFromSomeSessionOrCache 是客户保存电话号码后需要存储的值...

关于PHP、MYSQL 辅助键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49067904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com