2015-09-12 13 views
2

目前我需要關注的表格,它是用於酒店預訂的網站;第一張桌子是客人,另一桌是預訂。這些表通過約束鏈接,主鍵是來賓表上的來賓ID,而外鍵在來賓預訂表上是GuestIDFK2。通過PDO分配外鍵SQL

爲了通過預訂表識別出來的客人需要將FOREIGN KEY放在那裏。問題是我不知道如何通過PDO分配外鍵,因爲我不知道從哪裏獲取信息。 (通過我的意思是確定我可以分配一個值,但我從哪裏得到的信息)?如果可以,我可以將它存儲在會話變量中嗎?

我的連接和第一個查詢代碼如下。這會分配一個自動增量ID,但我不知道如何在執行第二個查詢時將其複製到FK。

<?php 
//Connecting to db adding customer 
$conn = new PDO("mysql:host=localhost;dbname=sgh_bookings","root",""); 
if(isset($_POST['submit'])){ 
$resultquery1 = $conn->prepare("INSERT INTO `guests` VALUES ('','$_SESSION[cusfname]','$_SESSION[cusaddress]','')"); 
$resultquery1->execute(); 
$resultquery2 = $conn->prepare("INSERT into ``"); 
} 
?> 
+0

'在session_start()'和果醬成'$ _SESSION [ 'theGuest']'... ... http://php.net/manual/en/session.examples.basic.php確保你清除它('_ _ESSION ['theGuest']')當你完成了這個客人 – Drew

+0

但是我該如何把id放在查詢中呢? –

+0

如果您正在尋求對sql注入攻擊保持開放,那麼只需從您的網絡中轉換舊的'mysql_ *'示例即可。就你而言,你根本不是「準備」一個聲明。您正在運行查詢字符串。我建議您閱讀PDO手冊頁 – Drew

回答

2

插入數據給客人表後,再PIC最後插入的ID和插入它來預訂表 例如:

<?php 
//Connecting to db adding customer 
$conn = new PDO("mysql:host=localhost;dbname=sgh_bookings","root",""); 
if(isset($_POST['submit'])){ 
$resultquery1 = $conn->prepare("INSERT INTO `guests` VALUES ('','$_SESSION[cusfname]','$_SESSION[cusaddress]','')"); 
$resultquery1->execute(); 
$id = $conn->lastInsertId(); 
//insert the $id in following table 
$resultquery2 = $conn->prepare("INSERT into ``"); 
} 
?> 
+0

非常感謝您的先生!事後簡單直觀。你的回答已被標記爲正確! –

1

從手冊頁here無恥挖走。相應地調整。直接使用類似$theGuest或會話變量的變量。使用bindParam,無論如何,你在PDO,槓桿:>

如果您使用的是PDO,請使用PDO。

<?php 
/* Execute a prepared statement by binding PHP variables */ 
$calories = 150; 
$colour = 'red'; 
$sth = $dbh->prepare('SELECT name, colour, calories 
    FROM fruit 
    WHERE calories < :calories AND colour = :colour'); 
$sth->bindParam(':calories', $calories, PDO::PARAM_INT); 
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12); 
$sth->execute(); 
?>