在MYSQL中发生更改后查询未执行

时间:2013-03-30 22:13:18

标签: php mysql

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也是类别表中的主键...因为我使这个cat_id成为FK实际上我复制粘贴了alter table add column fk等的语法等...它是让我保存我的记录...我通过传递虚拟值直接在php我的管理员上尝试它..它正在工作。

2 个答案:

答案 0 :(得分:0)

尝试:

$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或Mysqli。它将为未来节省大量时间和问题。 mysql函数如mysql_query已弃用,将在未来的php版本中删除。

答案 1 :(得分:0)

这就是错误。你的cat_id引用有错误。检查数据库约束。 $ Category被错误地插入。例如。如果cat_id与另一个表连接,则无法使用$ Category插入它。

相关问题