2013-02-12 101 views
1

我正在将数据填充到Assembly表格的下拉列表中(表格中的值由用户本身使用php添加)。现在我想在零件表中使用Assembly_Name。要从此下拉菜单中选择值并需要插入到Part表的Assembly_Name列中。我无法选择下拉值并将其插入到零件表中。从数据库填充下拉列表并将该值插入到另一个数据库中

Part.php

<html> 
<body> 

<form action="insert_part.php" method="post"> 
<!--Assembly_Id: <input type="text" name="Assembly_Id">--> 
<?PHP 
// Connect to your database ** EDIT THIS ** 
mysql_connect("localhost","root","abc"); // (host, username, password) 

// Specify database ** EDIT THIS ** 
mysql_select_db("test") or die("Unable to select database"); //select db 

$result = mysql_query("select assembly_id,assembly_name from assembly ORDER BY Assembly_Id"); 

echo '<select name="assembly_name"><OPTION>'; 
echo "Select an option</OPTION>"; 
while ($row = mysql_fetch_array($result)){ 

$assembly_name= $row["assembly_name"]; 
echo "<OPTION value=\"$assembly_name\">$assembly_name</OPTION>"; 
} 
echo '</SELECT>'; 
?> 


Part_name: <input type="text" name="Part_name"> 
<input type="submit"> 
</form> 
<hr><hr> 
<?php 
$con = mysql_connect("localhost","abc"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("test", $con); 

$result = mysql_query("SELECT * FROM Part ORDER BY Part_Id"); 

echo "<table border='1'> 
<tr> 
<th>Assembly Name</th> 
<th>Part Id</th> 
<th>Part Name</th> 
</tr>"; 

while($row = mysql_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td>" . $row['Assembly_Name'] ."</td>"; 
    echo "<td>" . $row['Part_Id'] . "</td>"; 
    echo "<td>" . $row['Part_Name'] . "</td>"; 
    echo "</tr>"; 
    } 
echo "</table>"; 

mysql_close($con); 
?> 
</body> 
</html> 

insert_part.php

<?php 
$con = mysql_connect("localhost","abc"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("test", $con); 
$assembly_name = isset($_POST['assembly_name']) 
$sql="INSERT INTO Part (assembly_name,Part_Id, Part_Name) VALUES ('$_POST[assembly_name]','$_POST[Part_Id]','$_POST[Part_name]')"; 

if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
header("Location:part.php"); 
exit; 
mysql_close($con); 
?> 

在提交的价值,我收到以下错误:

Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\insert_part.php on line 10

+1

[**请不要在新代码**中使用'mysql_ *'函数](http://bit.ly/phpmsql),它们不再被维护[并已正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。请参阅[**红框**](http://j.mp/Te9zIL)?了解[*已准备好的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli) - [这篇文章](http://j.mp/QEx8IB)可以帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – Lion 2013-02-12 14:57:04

回答

0

步骤1:尝试了解什么你的错误试图告诉你。第10行有一个可变问题。

第2步:检查代码,找出为什么可能存在使用变量的问题。

在此之后,检查线的上方,你会发现,在第9行声明未与;完成,并遇到了一个“意外”变到达10号线

时,也不会出现被提交a $_POST['Part_Id']

另外,您还需要在您的SQL语句中引用$_POST,如$_POST['assembly_name']

+0

你是对的,尽管那些只会发出通知,应该在理论上工作,只是不好的做法。 – Jason 2013-02-12 15:07:55

0

9号线你错过了一个分号:

$assembly_name = isset($_POST['assembly_name']); 

但作为@Lion说,做出改变使用预处理语句。因为这是非常不安全的代码:(