php - 使用外键在表中添加数据

标签 php mysql database foreign-keys

我查看并测试了几种解决方案,但仍然遇到同样的问题..

我有两个表:tb_cadastro(用于登录)和 tb_quest(用于问卷调查的答案)

    CREATE TABLE IF NOT EXISTS `tb_cadastro` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_quest` int(11) NOT NULL,
  `name` varchar(20) NOT NULL,
  `surname` varchar(20) NOT NULL,
  `email` varchar(45) NOT NULL,
  `password` varchar(35) NOT NULL,
  `sex` varchar(4) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_id_quest` (`id_quest`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;     
ALTER TABLE `tb_cadastro`
  ADD CONSTRAINT `fk_id_quest` FOREIGN KEY (`id_quest`) REFERENCES `tb_quest` (`id_quest`) ON UPDATE NO ACTION;

 CREATE TABLE IF NOT EXISTS `tb_quest` (
  `id_quest` int(11) NOT NULL AUTO_INCREMENT,
  `q1` varchar(1) NOT NULL,
  `q2` varchar(1) NOT NULL,
  `q3` varchar(1) NOT NULL,
  `q4` varchar(1) NOT NULL,
  `q5` varchar(1) NOT NULL,
  `q6` varchar(1) NOT NULL,
  `q7` varchar(1) NOT NULL,
  `q8` varchar(1) NOT NULL,

  PRIMARY KEY (`id_quest`),
  UNIQUE KEY `id_quest` (`id_quest`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;    

两个表通过id_quest关联

问题是 tb_cadastro 表没有向数据库添加任何内容,但也没有显示错误.. 表 tb_quest 正常添加数据 我通常也可以通过 mysql 在 tb_cadastro 中添加数据

我得出的结论是问题出在 FK 约束上,所以我删除了 FK 关系,一切正常

我尝试了所有我在那里发现的东西, 因此,如果您有解决方案,我将不胜感激

这是我的 PHP 代码


<?php
    session_start();

    require_once ("conexao.php");
    mysql_connect("$hostname", "$username", "$senhabd") or die(mysql_error());
    mysql_select_db($banco) or die(mysql_error());


    $_SESSION['Usuario'] = $_POST['Usuario'];
    $_SESSION['S_usuario'] = $_POST['S_usuario'];
    $_SESSION['Email'] = $_POST['Email'];
    $_SESSION['C_email'] = $_POST['C_email'];
    $_SESSION['Senha'] = $_POST['Senha'];
    $_SESSION['C_senha'] = $_POST['C_senha'];
    $_SESSION['Sexo'] = $_POST['Sexo'];

    $_SESSION['q1'] = $_POST['q1'];
    $_SESSION['q2'] = $_POST['q2'];
    $_SESSION['q3'] = $_POST['q3'];
    $_SESSION['q4'] = $_POST['q4'];
    $_SESSION['q5'] = $_POST['q5'];
    $_SESSION['q6'] = $_POST['q6'];
    $_SESSION['q7'] = $_POST['q7'];
    $_SESSION['q8'] = $_POST['q8'];

    $insert="INSERT INTO tb_quest (q1,q2,q3,q4,q5,q6,q7,q8) VALUES( '" . $_SESSION['q1'] . "','" . $_SESSION['q2'] . "','" . $_SESSION['q3'] . "','" . $_SESSION['q4'] . "','" . $_SESSION['q5'] . "','" . $_SESSION['q6'] . "','" . $_SESSION['q7'] . "','" . $_SESSION['q8'] . "')"or die (mysql_error());
    mysql_query($insert);

    $id_quest = mysql_insert_id();
    //echo $id_quest;

    $insert="INSERT INTO tb_cadastro (id_quest,name,surname,email,password,sex) VALUES( $id_quest,'" . $_SESSION['Usuario'] . "','" . $_SESSION['S_usuario'] . "','" . $_SESSION['Email'] . "','" . $_SESSION['Senha'] . "','" . $_SESSION['Sexo'] . "','" . $_SESSION['Sexo'] . "')" or die (mysql_error());
    mysql_query($insert);

?>

最佳答案

我不使用 PHP 或 mysql,但我猜您想在 SQL 字符串之外引用变量 $id_quest。

$insert="INSERT INTO tb_cadastro (id_quest,name,surname,email,password,sex) VALUES(" . $id_quest . ",'" . $_SESSION['Usuario'] . "','" . $_SESSION['S_usuario'] . "','" . $_SESSION['Email'] . "','" . $_SESSION['Senha'] . "','" . $_SESSION['Sexo'] . "','" . $_SESSION['Sexo'] . "')" or die (mysql_error());

关于php - 使用外键在表中添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27171753/

相关文章:

php - 连接不同内容的表

php - 在 Joomla 中包含文件 - 有什么区别?

php - 如何使用php将csv文件上传到mysql数据库中

php - SEO 和 ajax 加载的内容链接

php - 如何在 Codeigniter 中查询 2 表数据库

mysql - 我应该如何处理MySQL中的--secure-file-priv?

php - MySql 查询两张表

php - 使用 PDO 和 PHP 将表单中的数据插入 MySQL 数据库

mysql - Eloquent 地按 2 个字段进行搜索

Mysql select on word(复数,单数)