2015-09-17 1 views
1

Когда новый клиент покупает продукт, я хочу сохранить данные клиента в таблице clients, а также сохранить соответствующий идентификатор client_ID в таблице orders.Как хранить одни и те же данные в двух разных таблицах mySQL?

заказов стол:

order_ID product client 
============================ 
1501  bag   1 
1502  shoe  2 

клиентов стол:

client_ID name  
================= 
    1  Frank   
    2  John 

Я нашел решение, которое работает, но у меня есть ощущение, что это не самое умное решение.

$sql = "INSERT INTO clients(name) VALUES(?)"; 
$q = $con->prepare($sql); 
$q->execute(array($name)); 

$sql = "INSERT INTO orders(product) VALUES(?)"; 
$q = $con->prepare($sql); 
$q->execute(array($product)); 

$sql = 'SELECT * FROM clients ORDER BY client_ID DESC LIMIT 0, 1'; 
foreach ($con->query($sql) as $row) { 
    $client = $row['client']; 
    $sql = "UPDATE orders SET client = '$client' WHERE client IS NULL"; 
    $query = $con->prepare($sql); 
    $query->execute(); 
} 

Вопрос в том, есть ли лучший способ сделать это? (Примечание: CLIENT_ID является AUTO_INCREMENT)

ответ

6

Получить последний идентификатор вставляется в базу данных:

$sql = "INSERT INTO clients(name) VALUES(?)"; 
$q = $con->prepare($sql); 
$q->execute(array($name)); 

// Assuming you use PDO: 
$clientId = $con->lastInsertId(); 

// For mysqli this would be: 
// $clientId = $con->insert_id; 


$sql = "INSERT INTO orders(product, client) VALUES(?, ?)"; 
$q = $con->prepare($sql); 
$q->execute(array($product, $clientID)); 
+0

Спасибо вам большое – Jarla

Смежные вопросы