簡體   English   中英

無法將數據插入子表SQL phpMyAdmin

[英]cannot insert data into child table SQL phpMyAdmin

基本上我有2個簡單的表..第一個稱為“用戶”,它是父表。 PK是索引自動遞增的。 第二個表稱為“ useradvert”。 “ id”字段用作不會自動遞增的索引鍵。 每當我嘗試插入數據時,它都不會進入表(useradvert)。 我的PHP頁面上沒有任何錯誤。 我已打開錯誤報告。 我設法創建一個沒有錯誤的關系表。 我已經嘗試解決問題好幾天了,並在互聯網上搜索答案,但是仍然找不到並理解問題。 問題是由於子表中的索引鍵(id)沒有自動遞增引起的嗎? 兩個ID鍵都應該自動遞增嗎?

謝謝。真的需要您的幫助。

下面的“用戶”-父表和“ useradvert”-子表的表定義;

-表格useradvert表格結構

CREATE TABLE IF NOT EXISTS useradvertid INT(10)無符號NOT NULL, name2 VARCHAR(60)COLLATE utf8_unicode_ci NOT NULL, color2 VARCHAR(60)COLLATE utf8_unicode_ci NOT NULL, hobby2 VARCHAR(60)COLLATE utf8_unicode_ci NOT NULL,KEY idid ))ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;


-

-表users表結構

CREATE TABLE IF NOT EXISTS usersid INT(10)無符號NOT NULL AUTO_INCREMENT, name VARCHAR(60)COLLATE utf8_unicode_ci NOT NULL, telno VARCHAR(11)COLLATE utf8_unicode_ci NOT NULL, username VARCHAR(60)COLLATE utf8_unicode_ci NOT NULL, password VARCHAR( 60)COLLATE utf8_unicode_ci NOT NULL, date時間戳NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY( id ),UNIQUE KEY usernameusername ),KEY idid ))ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;

-

-為表users轉儲數據

插入usersidnametelnousernamepassworddate )VALUES(95,'Test Name','09999999999','test@test.com','$ 2y $ 12 $ fqdmAQk5c8qk8Eh2TWy2n.AdNO.lFjqmi2ruSzk8tsVXcK'71 2015-12-24 05:00:13'),(96,'testtwo','10121212121','test2@mail.com','$ 2y $ 12 $ nHw0CjWCF5AS4VB3mjIBo.o7nxszxXh.t5FWGv3pFe5izWBOo0A0O','2015-12-24 05:20:19');

-

-轉儲表的約束

-

-表useradvert約束

ALTER TABLE useradvert添加約束useradvert_ibfk_1 FOREIGN KEY( id )參考usersid );


這是用戶頁面(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>&nbsp;</p>
      </form>       

               <?php endwhile; ?>

               </body>
               </html>

索引鍵不需要自動增加。 相反,您應該將記錄插入到users表中,獲取該記錄的id ,然后將其作為id手動插入到useradvert表中。

我暗中懷疑您的錯誤是外鍵約束失敗。 如果在運行每個插入之后檢查錯誤,則可能會看到它。 id你給你的useradvert必須存在作為idusers第一個表。

問題解決了..我忘記了if(isset($ _ POST ['submit'])).. LoL。我做了一些小的改動只是為了添加上面的isset。現在一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM