我正在使用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我有一个HTML表单,我正在用PHP处理它。这类似于请求表单,因此用户登录并填写请求表单。此表单上的字段如下所示:
选择产品名称,选择数量等。这是为例如$quantity=$_POST['quantity']完成的…所以基本上表单数据存储在变量中。
现在,这是我被困住的部分。如何执行SQL INSERT查询,以便数据库知道cID和pID是什么?也就是说,外键值是什么?
例如:
$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查询?
谢谢你的帮助,如果你需要更多的信息,请给我回复。
发布于 2013-02-03 07:56:02
pID应该是已知的,因为您的表单应该使用产品的下拉列表,并将pID用作value。
然后,使用这些值做一个INSERT就很简单了。
<select id="product">
<option value="pid001">Product One</option>
<option value="pid002">Product Two</option>
... etc. ...
</select>您的表单应已包含该关联。
基于Products表中的SELECT查询创建下拉列表。对value使用pID,对内容使用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>';
?>类似地,当您让用户登录时,获取他们的cID并将其插入到会话中。
它们很容易被SQL注入。两者都提供参数化查询和准备好的语句。
发布于 2013-02-03 07:54:36
我认为您应该在显示表单之前检索产品和客户ID。然后,从表单中获取ID并将它们插入到第三个表中。
发布于 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',等等。
由于“代码提交格式不正确”,我甚至在提交这个信息时都遇到了很多麻烦,所以我希望你能得到这个!将<更改为<,将>更改为>,以便理解此代码。祝好运!
https://stackoverflow.com/questions/14667853
复制相似问题