我如何在php中编写sql查询来获得此结果?

时间:2015-09-22 11:47:08

标签: php mysql

首先,我正在尝试学习php,我想我会构建一个基本的维护管理应用程序,以便更好地掌握我在教程中看到的所有内容,并且遇到了障碍。我一直在努力让这个工作遵循在线的各种教程,但到目前为止我没有成功,所以我想我会在这里寻求帮助。我真的希望你能帮助我。

我想知道的是如何编写php& mysql将前3个表中的数据写入下面的desired_table?

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    |

我以为我会有一个表格,其中包含客户数据的输入字段以及我在下拉菜单中的设备数据和操作数据。当我选择一个设备时,操作会出现一个新的下拉列表,然后提交它。

希望这不会被标记为过于广泛的主题:)

1 个答案:

答案 0 :(得分:0)

使用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()进行检查。如果rowcount大于0则成功。

而且只是为了澄清,如果您还不知道这一点,这称为准备好的陈述。代码的作用是:

  • 准备告诉服务器您计划做什么。这增加了一个非常强大的保护层,因为基本的sql injection几乎不可能做到。

  • 之后你将变量绑定到给定的参数(其他语法是可能的,我只是喜欢这个)。代码处理引用,所以只需将参数放在那里。

  • 执行实际查询

只是为了更好的衡量,你可以为bindparam添加2个额外的参数。 在第三个中,您可以定义一个变量类型,PDO :: PARAM_STR和PDO :: PARAM_INT阻止任何其他类型的变量。 第4个允许你设置最大长度,如果变量更长,它将被阻止。

这将是这样的:

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