首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >插入PHP表单查询

插入PHP表单查询
EN

Stack Overflow用户
提问于 2013-02-03 07:50:35
回答 3查看 841关注 0票数 0

我正在使用PHP和MySQL,我遇到了一个小问题。我试着研究并弄清楚该怎么做,然而,我就是想不通。如果有任何帮助,我将不胜感激。这是我的问题..。

我有3个SQL表:

代码语言:javascript
运行
复制
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

我有一个HTML表单,我正在用PHP处理它。这类似于请求表单,因此用户登录并填写请求表单。此表单上的字段如下所示:

选择产品名称,选择数量等。这是为例如$quantity=$_POST['quantity']完成的…所以基本上表单数据存储在变量中。

现在,这是我被困住的部分。如何执行SQL INSERT查询,以便数据库知道cIDpID是什么?也就是说,外键值是什么?

例如:

代码语言:javascript
运行
复制
$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查询将用户输入存储到数据库中。但是,由于PHP和productID是不同表中的外键,我该如何编写customerID查询?

谢谢你的帮助,如果你需要更多的信息,请给我回复。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-03 07:56:02

pID应该是已知的,因为您的表单应该使用产品的下拉列表,并将pID用作value

然后,使用这些值做一个INSERT就很简单了。

代码语言:javascript
运行
复制
<select id="product">
    <option value="pid001">Product One</option>
    <option value="pid002">Product Two</option>
    ... etc. ...
</select>

您的表单应已包含该关联。

基于Products表中的SELECT查询创建下拉列表。对value使用pID,对内容使用pName。这样,表单中发送的数据就是INSERT中需要的外键。

代码语言:javascript
运行
复制
<?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>';
?>

类似地,当您让用户登录时,获取他们的cID并将其插入到会话中。

它们很容易被SQL注入。两者都提供参数化查询和准备好的语句。

票数 1
EN

Stack Overflow用户

发布于 2013-02-03 07:54:36

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

票数 1
EN

Stack Overflow用户

发布于 2013-02-03 11:00:06

“强尼,如果你用的是Dreamweaver,你的insert语句需要看起来像这样: if ((isset ($_POST"MM_insert”)) && ($_POST“MM_insert”== "insertForm")) { $insertSQL = sprintf(INTO CustomerRequests (productName,qty,cID) values (%s,%s,%s)“等。

然后使用具有隐藏字段的表单提交您的信息,例如:

否则,忘记Dreamweaver的东西,使用: insert into CustomerRequests (productName,qty,cID)值(bananas,2,1044),并在表单中使用相同的隐藏字段。您还需要捕获表单中提交的数据并将其保存为变量,就像您已经做过的那样:$quantity=$_POST'quantity',等等。

由于“代码提交格式不正确”,我甚至在提交这个信息时都遇到了很多麻烦,所以我希望你能得到这个!将<更改为<,将>更改为>,以便理解此代码。祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14667853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档