【问题标题】:cannot insert data into child table SQL phpMyAdmin无法将数据插入子表 SQL phpMyAdmin
【发布时间】:2016-03-29 11:13:28
【问题描述】:

基本上我有 2 个简单的表。第一个称为“用户”,它是父表。 PK 是索引自动递增的。第二个表称为“useradvert”。 “id”字段充当不自动递增的索引键。每当我尝试插入数据时,它都不会进入表(useradvert)。我的 PHP 页面上完全没有错误。我打开了错误报告。我设法创建一个没有错误的关系表。我已经尝试解决这个问题几天并在互联网上搜索答案,但仍然无法找到并理解问题所在。问题是由于子表中的索引键(id)不是自动递增的吗?两个 id 键都应该自动递增吗?

谢谢你..真的需要你的帮助tqs..

下面的“users”-父表和“useradvert”-子表的表定义;

-- 表useradvert的表结构

如果不存在则创建表 useradvert ( id int(10) 无符号非空, name2 varchar(60) 整理 utf8_unicode_ci 非空, color2 varchar(60) 整理 utf8_unicode_ci 非空, hobby2 varchar(60) 整理 utf8_unicode_ci 非空, 键id (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


--

-- 表users的表结构

如果不存在则创建表 users ( id int(10) 无符号非空 AUTO_INCREMENT, name varchar(60) 整理 utf8_unicode_ci 非空, telno varchar(11) 整理 utf8_unicode_ci 非空, username varchar(60) 整理 utf8_unicode_ci 非空, password varchar(60) 整理 utf8_unicode_ci 非空, datetimestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 主键 (id), 唯一键username (username), 键id (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=97 ;

--

-- 转储表users的数据

插入usersidnametelnousernamepassworddate)值 (95,'测试名称','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)引用usersid);


这是用户想将数据插入到表“useradvert”的用户页面(useracc-test.php)。该页面显示以前注册的数据(来自表“user”,此页面还允许用户插入新数据(到表“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>&nbsp;</p>
      </form>       

               <?php endwhile; ?>

               </body>
               </html>

【问题讨论】:

  • 您确实需要为我们提供更多的数据和代码示例,以便我们理解问题。
  • 表结构正确,请提供您的PHP代码...
  • 你去吧..我已经发布了 phpcode 和表定义。
  • 我的问题是.....两个表中的两个键都应该自动递增吗?第二...为什么数据没有插入到子表中??
  • 嗨 dawsonc623 ..感谢您的回复...我非常感谢您的帮助..但我完全无法理解或理解答案..在我的表格上.. useracc-test .php(用户可以检索和插入数据)..他们检索的数据来自以前的注册,存储在“用户”表中。然后在 useracc-test.php 的同一页面上(用户可以在名为 useradvert 的新表中插入新数据)。

标签: php mysql


【解决方案1】:

索引键不需要自动递增。相反,您应该将记录插入users 表,获取该记录的id,然后手动将其作为id 插入useradvert 表中。

我偷偷怀疑你的错误是外键约束失败。如果您在运行每个插入后检查错误,您可能会看到它。你给你的useradvertid 必须首先在users 表上以id 的形式存在。

【讨论】:

    【解决方案2】:

    问题解决了..我忘记了 if(isset($_POST['submit']))..LoL.我做了一些小改动只是为了在上面添加 isset..现在一切正常..

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 2012-08-05
      • 2014-06-17
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 2012-04-02
      • 2014-08-28
      • 1970-01-01
      相关资源
      最近更新 更多