基本上我有2个简单的表格。第一个称为"用户",它是父表。PK 是索引自动递增的。第二个表称为"用户广告"。"id"字段充当索引键,不会自动递增。每当我尝试插入数据时,它都不会进入表格(useradvert(。我的PHP页面上根本没有错误。我已打开错误报告。我设法创建了一个没有错误的关系表。我已经尝试解决问题几天并在互联网上搜索答案,但仍然无法找到和理解问题。问题是否是由于子表中的索引键 (id( 未自动递增引起的?两个 id 键都应该自动递增吗?
谢谢。。真的需要你的帮助TQS。
下面的表定义为"用户">-父表和"用户广告"-子表;
-- 表useradvert
的表结构
如果不存在,则创建表 useradvert
( id
int(10( 无符号不为空, name2
瓦尔查尔(60( 整理utf8_unicode_ci不为空, color2
瓦尔查尔(60( 整理utf8_unicode_ci不为空, hobby2
瓦尔查尔(60( 整理utf8_unicode_ci不为空, 钥匙id
( id
(( 引擎=InnoDB 默认字符集=UTF8 COLLATE=utf8_unicode_ci;
--
-- 表users
的表结构
如果不存在,则创建表 users
( id
int(10( 无符号 NOT NULL AUTO_INCREMENT, name
瓦尔查尔(60( 整理utf8_unicode_ci不为空, telno
瓦尔查尔(11(整理utf8_unicode_ci不为空, username
VARCHAR(60( 整理utf8_unicode_ci不为空, password
瓦尔查尔(60(整理utf8_unicode_ci不为空, date
时间戳不为空默认值CURRENT_TIMESTAMP, 主键 ( id
(, 唯一密钥username
( username
(, 钥匙id
( id
(( 引擎=InnoDB 默认字符集=UTF8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=97 ;
--
-- 转储表 users
的数据
插入users
(id
、name
、telno
、username
、password
、date
(值(95, 'Test Name', '09999999999', 'test@test.com', '$2y$12$fqdmAQk5c8qk8Eh2TWy2n.AdNO.lFjqmi2ruSzk8tsVXcK71OcPae', '2015-12-24 05:00:13'(,(96, 'testtwo', '10121212121', 'test2@mail.com', '$2y$12$nHw0CjWCF5AS4VB3mjIBo.o7nxszxXh.t5FWGv3pFe5izWBOo0A0O', '2015-12-24 05:20:19'(;
--
-- 转储表的约束
--
-- 表useradvert
的约束
更改表useradvert
添加约束useradvert_ibfk_1
外键(id
(引用users
(id
(;
这是用户页面(useracc-test.php(,用户假设将数据插入到表"useradvert"中。该页面显示以前注册的数据(来自表"用户",此页面还允许用户插入新数据(到表"useradvert"中(。
<?php
//useracc-test.php
/**
* Start the session.
*/
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);
// require 'lib/password.php';
require 'connect-test.php';
$userName= isset($_POST['username']) ? $_POST['username'] : '';
$query = "SELECT id, name, username, telno FROM users WHERE username = ?";
$stmt = $conn->prepare($query);
$stmt->bind_param('s', $userName);
$stmt->execute();
$res = $stmt->get_result();
?>
<html>
<head>
<style type="text/css">
#apDiv2 {
position: absolute;
left: 51px;
top: 238px;
width: 237px;
height: 93px;
z-index: 1;
}
#apDiv1 {
position: absolute;
left: 134px;
top: 123px;
width: 234px;
height: 104px;
z-index: 2;
}
#apDiv3 {
position: absolute;
left: 58px;
top: 146px;
width: 219px;
height: 61px;
z-index: 2;
}
#apDiv4 {
position: absolute;
left: 302px;
top: 102px;
width: 365px;
height: 123px;
z-index: 3;
}
</style>
<link href="SpryAssets/SpryTabbedPanels.css" rel="stylesheet" type="text/css">
<script src="SpryAssets/SpryTabbedPanels.js" type="text/javascript"></script>
</head>
<body>
Your Personal details:</p>
<p><?php while($row = $res->fetch_array()): ?>
<p><?php echo $row['id']; ?></p>
<p><?php echo $row['name']; ?></p>
<p><?php echo $row['username']; ?></p>
<p><?php echo $row['telno']; ?>
<?php
// $userid = $_POST['id'];
$stmt=$conn->prepare("INSERT INTO useradvert (id,name2,color2,hobby2) VALUES (?,?,?,?)");
$stmt->bind_param("isss", $id, $name2, $color2, $hobby2);
$stmt->execute();
if (!$stmt)
{ printf("Errormessage: %s'n", $mysqli->error);}
else {
echo "New records created successfully";}
$stmt->close();
$conn->close();
?>
<form name="form2" method="post" action="useracc-test.php">
<p>INSERT YOUR INTEREST:</p>
<p>
</p>
ID:
<input name="id" type="hidden" id="id" value="<?php echo $row['id']; ?>">
<p>Name :
<input type="text" name="name2" id="name2">
</p>
<p>
<label for="warna2"></label>
Color :
<input type="text" name="color2" id="color2">
</p>
<p>
<label for="hobi2"></label>
Hobby:
<input type="text" name="hobby2" id="hobby2">
</p>
<p>
<input type="submit" name="submit" id="submit" value="submit">
</p>
<p> </p>
</form>
<?php endwhile; ?>
</body>
</html>
索引键不需要自动递增。相反,您应该将记录插入到users
表中,获取该记录的id
,然后手动将其作为useradvert
表上的id
插入。
我偷偷怀疑您的错误是外键约束失败。如果您在运行每个插入后检查错误,您可能会看到它。您给useradvert
id
必须首先作为id
存在于users
桌上。
问题解决了。我忘记了 if(isset($_POST['submit']((。LoL.我做了一些小的更改只是为了添加上面的 isset..现在一切正常..