簡體   English   中英

我將如何在 php 中編寫 sql 查詢以獲得此結果?

[英]How would I write the sql query in php to get this result?

首先,我目前正在嘗試學習 php,我想我會構建一個基本的維護管理應用程序來更好地掌握我在教程中看到的所有內容,但我遇到了障礙。 我一直在嘗試按照在線的各種教程使其工作,但到目前為止我沒有成功,所以我想我會在這里尋求幫助。 我真的希望你能幫助我。

我想知道的是如何編寫 php 和 mysql 將前 3 個表中的數據從下面寫入到所需的表?

Clients
------------------------------
client_id    | client_name
------------------------------  
    1        | client_1 
------------------------------  
    2        | client_2
------------------------------  
    3        | client_3 


Equipments
------------------------------
eq_id        | eq_name
------------------------------  
    1        | pc 
------------------------------  
    2        | laptop
------------------------------  
    3        | printer


Operations
------------------------------------------------
op_id        | op_desc
------------------------------------------------    
    1        | dust cleaning
------------------------------------------------    
    2        | changing processor cooling paste
------------------------------------------------    
    3        | cpu replacement
------------------------------------------------    
    4        | display replacement
------------------------------------------------    
    5        | dvd-rom replacement
------------------------------------------------    
    6        | ram replacement
------------------------------------------------    
    7        | cartrige replacement



Desired_table
-------------------------------------
id  | client_id  | eq_id  | op_id  |
-------------------------------------   
  1 |    1       |    1   |   1    |
-------------------------------------
  2 |    1       |    1   |   2    |
-------------------------------------   
  3 |    1       |    1   |   3    |
-------------------------------------   
  4 |    1       |    1   |   5    |
-------------------------------------   
  5 |    1       |    2   |   1    |
-------------------------------------   
  6 |    1       |    2   |   2    |
-------------------------------------   
  7 |    1       |    2   |   4    |
-------------------------------------   
  8 |    2       |    1   |   1    |
-------------------------------------   
  9 |    2       |    1   |   2    |
-------------------------------------   
  10|    2       |    1   |   3    |
-------------------------------------   
  11|    2       |    1   |   5    |
-------------------------------------   
  12|    2       |    3   |   1    |
-------------------------------------   
  13|    2       |    3   |   7    |

我想我會有一個表單,其中包含客戶端數據和設備數據和操作數據的輸入字段,我將在下拉列表中使用。 當我選擇設備時,會出現一個帶有操作的新下拉列表,然后提交它。

希望這不會被標記為太廣泛的主題:)

使用您的 bitbucket 中的代碼應該可以做到:

$page = $db->prepare("
    INSERT INTO new_table_name (column_name1, column_name2, column_name3) 
    VALUES (:col1, :col2, :col3)
");

$page->bindparam(':col1', $value1);
$page->bindparam(':col2', $value2);
$page->bindparam(':col3', $value3);
$page->execute();
if($page->rowcount() > 0){
    echo "Inserted a new row";
}

這是一個示例,將 'new_table_name' 替換為新表的名稱並更改列名稱。

之后,只需將 $value1、2 和 3 更改為包含要插入的值的變量,就可以了。

如果您想知道插入是否成功,只需檢查 $page->rowcount()。 如果行數大於 0,則表示成功。

澄清一下,如果您還不知道,這稱為准備好的聲明。 代碼的作用是這樣的:

  • Prepare 告訴服務器你打算做什么。 這增加了一個非常強大的保護層,因為基本的sql 注入幾乎不可能做到。

  • 之后,您將變量綁定到給定的參數(其他語法也是可能的,我更喜歡這個)。 代碼會處理引號,因此只需將參數放在那里即可。

  • 執行實際查詢

為了更好的衡量,您可以向 bindparam 添加 2 個額外的參數。 在第三個中,您可以定義一個變量類型,PDO::PARAM_STR 和 PDO::PARAM_INT 阻止任何其他類型的變量。 第四個讓你設置最大長度,如果變量更長,它會被阻塞。

這將如下所示:

$page->bindparam(':col1', $value1, PDO::PARAM_STR, 100);
//block anything which isn't a string or longer than 100 characters

暫無
暫無

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

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