Я искал и тестировал несколько решений, но все еще с той же проблемой ..
У меня есть две таблицы: 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 добавляет данные нормально
Я также могу добавить данные в tb_cadastro обычно через MySQL
Я пришел к выводу, что проблема была в ограничении 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, но я предполагаю, что вы хотите сослаться на переменную $ id_quest вне строки SQL.
$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());
Других решений пока нет …