【问题标题】:How to insert or update foreign key values using PHP如何使用 PHP 插入或更新外键值
【发布时间】:2015-09-11 11:01:28
【问题描述】:

我在mysql数据库中做了2个表

  1. user_details
  2. bank_details

user_details 中创建以下实体

  1. user_id 作为主键
  2. 用户名
  3. 密码
  4. 地址

bank_details 中创建以下实体

  1. id 作为主键
  2. user_id 作为外键
  3. 银行名称
  4. ac_no

首先使用以下代码插入用户详细信息

<?php
$un = $_POST['un'];
$ps = $_POST['ps'];
$adr = $_POST['adr'];

$sql = mysql_query("insert into user_details username='$un', password='$ps', address='$adr'");
?>

现在我需要在 bank_details 表中插入银行详细信息

<?php
$bn = $_POST['bn'];
$ac_no = $_POST['ac'];
$sql = mysql_query("insert into bank_details user_id= ?? bank_name='$bn', ac_no='$ac_no'");
?>

如何在这里定义外键值?

【问题讨论】:

标签: php mysql insert


【解决方案1】:

您的查询省略了 MYSQL SET 关键字。无论如何,您可以按照您的代码约定执行此操作:

<?php
$mysql = mysql_connect([...]

$un = mysql_real_escape_string($_POST['un'], $mysql);
$ps = mysql_real_escape_string($_POST['ps'], $mysql);
$adr = mysql_real_escape_string($_POST['adr'], $mysql);

$sql = mysql_query("insert into user_details SET username='$un', password='$ps', address='$adr'", $mysql);

if(!$sql)
{
  // something went wrong with the query, add error handling here
  trigger_error('query failed', E_USER_ERROR);
}
else
{
    $user_id = mysql_insert_id(); //get the id of the last inserted query/user
    $bn = mysql_real_escape_string($_POST['bn'], $mysql);
    $ac_no = mysql_real_escape_string($_POST['ac'], $mysql);
    $sql = mysql_query("insert into bank_details SET user_id = $user_id, bank_name='$bn', ac_no='$ac_no'", $mysql);
    if(!$sql)
    {
      // something went wrong with the query, add error handling here
      trigger_error('query failed', E_USER_ERROR);
    }
}
?>

但是,我必须指出,不推荐使用 mysql_* 系列函数,您应该认真开始使用 mysqli_* 函数。

更新:

根据 CodeGodie 的建议,这是使用 mysqli_* 函数重写的代码:

<?php
$mysqli = mysqli_connect(SERVER_NAME, USER_NAME, PASSWORD, DB_NAME);

$un = mysqli_real_escape_string($_POST['un']);
$ps = mysqli_real_escape_string($_POST['ps']);
$adr = mysqli_real_escape_string($_POST['adr']);

$sql = mysqli_query($mysqli, "insert into user_details SET username='$un', password='$ps', address='$adr'");

if(!$sql)
{
  // something went wrong with the query, add error handling here
  trigger_error('query failed', E_USER_ERROR);
}
else
{
    $user_id = mysqli_insert_id($mysqli); //get the id of the last inserted query/user
    $bn = mysqli_real_escape_string($_POST['bn']);
    $ac_no = mysqli_real_escape_string($_POST['ac']);
    $sql = mysqli_query($mysqli, "insert into bank_details SET user_id = $user_id, bank_name='$bn', ac_no='$ac_no'");
    if(!$sql)
    {
      // something went wrong with the query, add error handling here
      trigger_error('query failed', E_USER_ERROR);
    }
}
?>

【讨论】:

  • 抱歉,我很想在脚本中添加一些错误处理的概念;-)
  • ...并处理可能的 sql 注入 :-)
  • @Volkerk,感谢您的编辑。欣赏。 OP 肯定会需要它。
  • 你应该用mysqli函数重写你的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 2017-12-24
  • 1970-01-01
相关资源
最近更新 更多