if(empty($Errormessage))
{
if(move_uploaded_file($File_Tmp,"product_images/".$File_Name))
{
//To Rename the uploaded file
$Random=rand()*1200;
$File_New_Name=$Random.".".$File_Extension;
rename("product_images/".$File_Name,"product_images/".$File_New_Name);
$Date_Added=date("d-m-Y");
$Query="INSERT INTO products (pro_id,product_name,price,details,product_picture,date_added,last_edited,cat_id) VALUES ('','$Product_Name','$Product_Price','$Product_Details','$File_New_Name','$Date_Added','','$Category')";
$Result=mysql_query($Query);
if($Result)
{
header ("location: addsuccess.php");
}
}
}
//类别<td><select name="category" size="1" id="select">
<option value="Null">Select Category</option>
<?php
$Select=mysql_query("SELECT * FROM category");
while ($Row=mysql_fetch_array($Select))
{
$Cat_Id=$Row['cat_id'];
$Category_Name=$Row['category_name'];
?>
<option value="$Cat_Id"><?php echo $Category_Name; ?></option>
<?php } ?>
</select></td>
//验证if($Category=="Null")
{
$Errormessage[]="Category should be selected";
}
cat_id是我的产品表中作为FK的列…而且cat_id是category表中的主键…因为我做了这个cat_id一个FK实际上我复制粘贴的语法alter表添加列FK等…它不允许我保存我的记录……我通过传递虚拟值直接在PHP上尝试了它。
Try with:
$Query="INSERT INTO products (pro_id, product_name,price,details,product_picture,date_added,last_edited,cat_id) VALUES (NULL,'$Product_Name','$Product_Price','$Product_Details','$File_New_Name','$Date_Added','',$Category)";
NULL代替"可能解决你的问题"。另外,$Category没有撇号,因为db-column cat_id是一个数字而不是字符串。(数字不能用撇号处理)。
$Category=mysql_real_escape_string($_POST['category']);
(您试图转义字符串,但$_POST['category']是数字),所以这不是正确的方法)。
应该是这样的:
if (isset($_POST['category'])) {
$Category = $_POST['category'];
}
else {
$Category = 0;
}
也发生了变化:
?>
<option value="$Cat_Id"><?php echo $Category_Name; ?></option>
<?php } ?>
?>
<option value="<?php echo $Cat_Id;?>"><?php echo $Category_Name; ?></option>
<?php } ?>
强烈建议使用PDO或mysql。这将为将来节省很多时间和问题。mysql_query等mysql函数已被弃用,并将在php的未来版本中删除。
这就是错误。您的cat_id引用有错误。检查db约束。$Category插入错误。例如,如果cat_id与其他表连接,则不能使用$Category插入。