2

subcategory、product、prod_categoryの3つのテーブルがあります。

製品を作成すると、成功すると、successful product_idが返され、その後、フォームのサブカテゴリ列がキャプチャされ、product_idとsubcategory_idをprod_categoryテーブルに挿入する次のクエリが実行されます。関数が機能しているかどうかをテストするために、単一のphpファイルでテストしました。挿入することはできますが、自分の状況に合わせると、このエラーが発生していました。

警告:PDOStatement :: execute()[pdostatement.execute]:SQLSTATE [23000]:整合性制約違反:1452子行を追加または更新できません:外部キー制約が失敗します(yokotachiprod_category、CONSTRAINT prod_category_ibfk_4FOREIGN KEY(product_id)REFERENCES productproduct_id)ON DELETE CASCADE ON UPDATE CASCADE)in C:\ xampp \ htdocs \ yokotachi \ models \ Prod_category.php on line 27

2つのパラメーターが関数に渡されたことを確認しましたが、クエリを実行できない理由がわかりません。

if($_POST){ 
$title = mysql_real_escape_string($_POST['title']);
$model = mysql_real_escape_string($_POST['model']);
$description = stripslashes($_POST['description']);
$feature = stripslashes($_POST['feature']);
$specification = stripslashes($_POST['specification']); 

$subcategory_name = mysql_real_escape_string($_POST['product_subcategory']);

$sub_obj = $subcategory->find_by_sub_category_name($subcategory_name);

$subcategory_id = $sub_obj->sub_category_id;
echo $subcategory_id;
$executed_product_id=
    $product->create($title,$model,$description,$feature,$specification);
echo "im here".$subcategory_id;
echo $executed_product_id;
$responde = $prod_category->create($executed_product_id,$subcategory_id);
if($responde){
    echo "<script>";
    echo "alert(".$executed_product_id.");";
    echo "</script>";
    header("location: ../../../views/admin/product/product_index.php");
}}

1つの投稿がインデックスの再作成の問題であることがわかり、テーブルを切り捨てるように求められました。しかし、自分の状況で切り捨てクエリを実行する方法がわかりません。

前もって感謝します。

4

1 に答える 1

0

エラーメッセージは、テーブル「prod_category」で使用しようとしている製品 ID 番号がテーブル「product」に存在しないことを示しているようです。

この行が実行された後、$executed_product_id の値を確認する必要があります。

$executed_product_id=
    $product->create($title,$model,$description,$feature,$specification);

その値が「製品」テーブルにない場合、それが問題です。外部キー参照では、「prod_category」で使用する前に、その製品 ID が「product」に存在する必要があります。

于 2012-10-17T15:16:41.803 に答える