2015-08-08 112 views
1

02表称为itemcustomer如何将表id传递给PHP中的另一个表

item(item_id, item_name) customer(cus_id, iid, cus_name)

我只是试图从item存储item_idiidcustomer。 但它总是显示null值。 我的数据库是item_sales

这是我的PHP代码

<html> 
<title></title> 
<head></head> 
<body> 

<?php 
$hostname = "localhost"; 
$database = "item_sales"; 
$username = "root"; 
$password = ""; 

$con = mysql_pconnect($hostname, $username, $password); 

error_reporting(0); 

?> 

<form action="index.php" method="post" enctype="multipart/form-data"> 

<p>Customer Name : <input type="text" name="cus_name" /><br/><br/> </p> 
<p>Select an Item: 
<select name="iid"> 
     <?php 
      $sql = mysql_query("SELECT * FROM item"); 
      mysql_select_db($database,$con); 
      while($sqlv = mysql_fetch_array($sql)) 
      { ?> 
       <option id="<?php echo $sqlv['item_id']; ?>"><?php echo $sqlv['item_name']; ?></option> 
      <?php } ?> 
    </select> 
    </p> 

<?php 

if(isset($_POST['submit'])) 
{ 
     $sql2 = "SELECT * FROM item WHERE iid='%item_id%'"; 
     mysql_select_db($database,$con); 
     $mydata = mysql_query($sql2); 

     $cus_name = $_POST['cus_name']; 


     $sql3 = "INSERT INTO customer (cus_id, iid, cus_name) VALUES ('', '$_POST[iid]', '$cus_name')"; 
     mysql_query($sql3); 

} 
?> 



<input type="submit" name="submit" value="Add Sale" /> 
</form> 


</body> 
</html> 
+0

将是非常危险的代码。您允许将POST变量直接插入到数据库中,而且绝对不会进行验证。这使您的应用程序打开到SQL注入。 – Chris

+0

尽管如此,不知道问题出在哪里,但我不确定为第二个SQL设置了%item_id%的值。这可能是你的问题。 – Chris

+0

我不知道要更正此代码。但当我从下拉列表中选择一个选项时,我只想将'item'表中的'item_id'存储到'customer'表中的'iid'。 'iid'应该链接到'item'表中的'item_id'。你能改正这个代码吗? –

回答

0

正确的代码如下:

<html> 
<title></title> 
<head></head> 
<body> 

<?php 
$hostname = "localhost"; 
$database = "item_sales"; 
$username = "root"; 
$password = ""; 

$con = mysql_pconnect($hostname, $username, $password); 

error_reporting(0); 

?> 

<form action="index.php" method="post" enctype="multipart/form-data"> 

<p>Customer Name : <input type="text" name="cus_name" /><br/><br/> </p> 
<p>Select an Item: 
<select name="iid"> 
     <?php 
      $sql = mysql_query("SELECT * FROM item"); 
      mysql_select_db($database,$con); 
      while($sqlv = mysql_fetch_array($sql)) 
      { ?> 
       <option value="<?php echo $sqlv['item_id']; ?>"><?php echo $sqlv['item_name']; ?></option> 
      <?php } ?> 
    </select> 
    </p> 

    <?php 

    if(isset($_POST['submit'])) 
    { 
     $sql2 = "SELECT * FROM item"; 
     mysql_select_db($database,$con); 
     $mydata = mysql_query($sql2); 

     $cus_name = $_POST['cus_name']; 
     $iid = $_GET['item_id']; 


     $sql3 = "INSERT INTO customer (cus_id, iid, cus_name) VALUES ('', '$_POST[iid]', '$cus_name')"; 
     mysql_query($sql3); 

    } 
    ?> 



    <input type="submit" name="submit" value="Add Sale" /> 
</form> 


</body> 
</html> 
1

它不工作的原因是,你正试图拯救IID选择到IID领域,我猜在客户IID字段是数字类型字段,像INT - 使用POST变量像这样,您将要保存SELECT的文本而不是val。

你需要做什么来解决这个问题是在每个选项上设置一个“值”。你已经设置了一个ID,但是这里没有真正的帮助。

<select name="iid"> 
    <?php 
    $sql = mysql_query("SELECT * FROM item"); 
    mysql_select_db($database,$con); 
    while($sqlv = mysql_fetch_array($sql)) 
    { ?> 
     <option value="<?php echo $sqlv['item_id']; ?>"><?php echo $sqlv['item_name']; ?></option> 
    <?php } ?> 
</select> 

这是除了你的代码是非常危险的点。我建议你不要使用原始的mysql函数,1)它们不提供任何真正的保护,免受恶意用户的攻击,2)它们很快就会从PHP支持中移除。

看到这个关于如何从你的PHP代码取代MySQL功能,使文章:How can I prevent SQL injection in PHP?

这篇文章也可以帮助你理解你的代码提供的危险。

+0

我不明白你在说什么。我没有得到解决方案。任何方式谢谢你回答克里斯先生。 –

+0

在您输出<选项的输出中,更改值的ID ...查看我的示例...与您的示例不同。 VALUE不是ID http://files.tatedavies.com/so-row.png – Chris

+0

YESSSSSS !!!!!!!它工作:) :) :) 谢谢SOOOOOOOOOO克里克先生......我改变了我的代码中的东西:)但你是男人:)谢谢:) –

相关问题