簡體   English   中英

動態表INNER JOINS

[英]Dynamic Table INNER JOINS

好的,這是這里的最新信息。 我需要為每個ID遞增生成注釋。 IE,我有客戶1.他/她注冊,然后我就可以使用他們的帳戶來處理我的帳戶。.我需要在該特定頁面上留下評論。 “我可以做的”第二個客戶注冊,然后在用戶2的鏈接上,我可以訪問他們的帳戶並留下評論(僅出於管理目的)。

“由於無法在插入中進行此操作,因此我只能以ID#1進行指向。我不知道如何以新的ID進行指向”

第三位客戶注冊了……依此類推。代碼如下。 我也在這里包括了所有PHP代碼。您可以使用自己的數據連接在一端進行測試。

/* CREATING THE TABLE Customers*/
      <?php
include('../includes/mysql_connect.php');
$query = "CREATE TABLE `Customers` (
`customer_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`cust_name` VARCHAR(50) NOT NULL,
INDEX (`customer_id`),
PRIMARY KEY (`customer_id`)
)engine=innodb";
if(@mysql_query($query,$dbc)){
echo '<p>Table for customers has been successfully created!</p><br/>';
} else {
echo '' . mysql_error($dbc)  .'<br/>';
}
mysql_close($dbc);
?>


/* CREATING THE TABLE Comments*/
<?php 
include('../includes/mysql_connect.php');
$query = "CREATE TABLE `Comments` (
`comment_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`customer_id` INT(10) UNSIGNED NOT NULL,
`comment` VARCHAR(255) NOT NULL,
PRIMARY KEY  (`comment_id`),
INDEX (`customer_id`),
FOREIGN KEY (`customer_id`) REFERENCES `Customers`
(`customer_id`)
)engine=innodb";

if(@mysql_query($query,$dbc)){
echo '<p>Table for Comments has been successfully created!</p><br/>';
} else {
echo '' . mysql_error($dbc)  .'<br/>';
}
mysql_close($dbc);
?>

/* So now that I have already created the tables, I work on getting the link for each customer. */

<?php
include('includes/mysql_connect.php');

$query = 'SELECT * FROM `Customers` ';
if($y = mysql_query($query,$dbc)){
while($row = mysql_fetch_array($y)){
//echo " {$row['id']} <br/>";

echo "<div id='container'>
<div id='first_wrapper'>
<a style='text-decoration:none'; href=\"http://www.mywebsite.com/master/account.php?id={$row['customer_id']}\"> 
Customer # " . $row['customer_id'] ." 
</a></div>";
}
}
mysql_close($dbc);
?>


/* The next step is to retrieve the info From the Customers table */
/* Select records for specific user based upon their ID */
<?php

include('includes/mysql_connect.php');

if(isset($_GET['id']) && is_numeric($_GET['id'])) { 

$query = "SELECT * FROM Customers WHERE `customer_id`={$_GET['id']}";
if($x = mysql_query($query,$dbc)){

$row = mysql_fetch_array($x); 

echo "{$row['cust_name']}<br/>";

echo '<input type="hidden" name="id" value="' . $_GET['id'] . '"/>';    
}
}
mysql_close($dbc);  

?>

/* My problem comes here on the comments table */


if($_SERVER['REQUEST_METHOD'] == 'POST'){
// NEEDS DATA CONNECTION
include('includes/mysql_connect.php');
// VARIABLE IF PROBLEM DOES NOT OCCUR
$problem = FALSE;
// VALIDATION HERE
if(!empty($_POST['comment'])){

$comment = mysql_real_escape_string(trim(strip_tags($_POST['comment'])), $dbc);
} else { // IF PROBLEM
echo '<p style="color:red;">Please enter comment!</p>';
$problem = TRUE;
}
//IF NO PROBLEM
if(!$problem){

// RUN QUERY

$query = "INSERT INTO `Comments`(`customer_id`,`comment`) VALUES (1,'$comment')";
// EXECUTE QUERY
if(@mysql_query($query,$dbc)){
echo '<p style="color:blue;">This comment has been added!<p>';
} else {// IF PROBLEM
echo '<p style="color:red;">Could not retrieve the information because <br/> 
'. mysql_error($dbc) .'.</p><p>The query run was '.$query.' </p>';
}
} // END OF VARIABLE IN NO PROBLEM
mysql_close($dbc); // CLOSING CONNECTION
} // END OF MAIN IF
?>
<html>
<head><title>DUMMY INSERTS</title></head>
<body>
<form action="self.php" method="post">
<textarea name="comment" cols="70" rows="10"/></textarea>
<br/>
<input type="submit" name="submit" value="Submit!"/>
</form>
</body>
</html>

請幫助我。..我已經有一個星期了,我很煩.. THX

Per davejal的評論:FK約束表明評論中的每個值customer_id必須是客戶customers_id中的值

因此,肖恩(Sean)說:首先將使用客戶的AUTO_INCREMENT作為客戶INSERT INTO customers (cust_name) values ('$cust_name') 然后, INSERT INTO comments (customers_id, comment) VALUES (LAST_INSERT_ID(), '$comment')將LAST_INSERT_ID用於該AUTO_INCREMENT選擇的客戶customer_id值,並將注釋AUTO_INCREMENT用於comment_id。

肖恩(Sean)和費城(philipxy):客戶插入AUTO_INCREMENT使您成為新的客戶ID。 如果您要立即使用,請使用LAST_INSERT_ID(); 否則,當他們登錄或管理員提供時,您會獲得他們的ID。 根據Ryan Vincent的sqlfiddle: 修改為使用LAST_INSERT_ID()的版本

Per Sean和Ryan Vincent:當您使用PHP進行I / O時,請在問題中進行顯示。 如果您獲取要處理其注釋的客戶ID(在表單內echo '<input type="hidden" name="customer_id" value="' . $_GET['customer_id'] . '"/>'; ) ), 那么在您的評論INSERT使用或通過選擇值$_GET['customer_id']

所有這些最小化的弄亂代碼,輸入,輸出(可能包括執行期間的調試輸出,盡管這可能會影響錯誤的表現)和錯誤都應該是關於修復代碼的每個問題。 閱讀有關如何創建最小,完整和可驗證示例的內容並采取行動。

暫無
暫無

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

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