为PHP表单插入查询

时间:2013-02-02 23:50:35

标签: php mysql sql insert-query

我正在使用PHP和MySQL,我遇到了一个小问题。我试图研究并弄清楚要做什么,但是,我无法弄明白。我将不胜感激任何帮助。这是我的问题...

我有3个SQL表:

Customers
    cID (primaryKey)
    email
    name
    password
    ...etc.

Products
    pID (primaryKey)
    Pname
    Ptype

CustomerRequests
    requestID(primarykey)
    cID (foreign key references customer table)
    pID (foreign key references products table)
    quantityRequested

我有一个用PHP处理的HTML表单。这就像请求表单一样,因此用户登录并填写请求表单。此表单上的字段如下:

选择产品名称,选择数量等。 $quantity=$_POST['quantity'] ...所以基本上表单数据存储在变量中。

现在,这是我坚持的部分。如何执行SQL INSERT查询,以便数据库知道cIDpID是什么?即外键值是什么?

例如:

$insert = mysql_query(INSERT INTO CustomerRequests VALUES ('THIS WOULD BE BLANK AS ITS AUTOINCREMENTED PROMARY KEY FOR REQUEST ID','HOW WOULD I GET THE cID AUTOMATICALLY HERE','HOW WOULD I GET THE pID HERE','".$quantity."'))

查询使用INSERT查询将用户输入存储到数据库中。但是,由于customerID和productID是不同表中的外键,我该如何编写PHP查询?

感谢您的帮助,如果您需要更多信息,请与我联系。

3 个答案:

答案 0 :(得分:1)

我认为您应该在显示表单之前检索产品和客户ID。 然后,从表单中获取ID并将其插入第三个表中。

答案 1 :(得分:1)

我不确定你为什么认为自己有问题。应该知道cID,因为客户已登录。pID应该是已知的,因为您的表单应该使用pID被用作{{1}的产品的下拉列表}}

然后使用这些值进行value这是一个简单的问题,即

INSERT

换句话说,这些值在 之前都已知

事后,不要将产品名称与ID匹配;这只是增加额外的工作。如果您有值,那么您应该使用它。您的表单应该已经包含该关联。

根据Products表格中的<select id="product"> <option value="pid001">Product One</option> <option value="pid002">Product Two</option> ... etc. ... </select> 查询创建下拉列表。使用SELECT pID和内容value。这样,表单中发送的数据就是您pName中需要的外键。

INSERT

同样,当您登录用户时,请获取他们的<?php /* * $arrProducts is the result from a query like * SELECT * FROM Products; */ print '<select id="products">'; foreach ($arrProducts as $arrProduct) { printf('<option value="%s">%s</option>', $arrProduct['pID'], $arrProduct['pName']); } print '</select>'; ?> 并将其插入会话中。

另外一点,停止使用PHP的cID函数系列。这些已弃用,将从未来版本中删除。他们倾向于SQL注入。您应该在应用程序中使用mysql_或PDO。两者都提供参数化查询和准备好的声明。

答案 2 :(得分:1)

“Johnny,如果你使用Dreamweaver,你的插入语句需要如下所示:if((isset($ _ POST [”MM_insert“]))&amp;&amp;($ _POST [”MM_insert“] == “insertForm”)){$ insertSQL = sprintf(INTO CustomerRequests(productName,qty,cID)值(%s,%s,%s)“等。

然后使用带有隐藏字段的表单提交您的信息,例如:     &lt; form name =“insertForm”type =“post”action =“placeOrder.php”&gt;     &lt; input type =“hidden”type =“text”id =“qty”value =“&lt; php?echo $ row_Recordset1 ['qty'];?&gt;” /&GT;     &lt; input type =“hidden”type =“text”name =“productName”value =“&lt; php?echo $ row_Recordset1 ['productName'];?&gt;” /&GT;     &lt; input type =“hidden”type =“text”name =“cID”value =“&lt; php?echo $ cID;?&gt;”/&gt;     &lt; input type =“hidden”name =“MM_insert”value =“insertForm”/&gt;     &lt; input type =“submit”name =“send”id =“Submit”value =“Submit Form”/&gt;     &LT; /形式&GT;

否则,只需忘记Dreamweaver的内容并使用:插入CustomerRequests(productName,qty,cID)值(香蕉,2,1044)并在表单中使用相同的隐藏字段。您还需要捕获表单中提交的数据并将其保存为变量,如您所做的那样:$ quantity = $ _ POST ['quantity']等。

由于“代码提交没有正确格式化”,我甚至提交此信息都很麻烦,所以我希望你能得到这个!改变&lt;到&lt;和&gt;到&gt;理解这段代码。 祝你好运!