-1
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で直接試しました..それは機能しています。

4

2 に答える 2

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 を使用すると、問題が解決する場合があります。また、db-column cat_id は文字列ではなく数値であるため、$Category にはアポストロフィがありません。(数字はアポストロフィで処理しないでください)。

$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_query のような mysql-functions は非推奨であり、php の将来のリリースで削除される予定です。

于 2013-03-30T22:26:23.700 に答える