2015-08-08 46 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克里克先生......我改變了我的代碼中的東西:)但你是男人:)謝謝:) –

相關問題