私はこれの上に髪を引っ張っています-うまくいけば、それは簡単な見落としです。
jQueryAJAX関数を使用してこのPHPファイルに多数の変数を送信することを計画しています。すべての$_POST変数をphp変数に割り当てるために、このセクションを作成しました。
foreach($_POST as $key => $value){
$$key = $value;
}
次のように変数を操作できるため、機能しているようです。
echo 'name: ' . $name . '<br>';
echo 'main_pic: ' . $main_pic . '<br>';
echo 'product_pic: ' . $product_pic . '<br>';
echo 'more_pic: ' . $more_pic . '<br>';
echo 'paypal_code: ' . $paypal_code . '<br>';
echo 'category_id: ' . $category_id . '<br>';
echo 'price: ' . $price . '<br>';
echo 'description: ' . $description . '<br>';
echo 'product_color: ' . $product_color . '<br>';
echo 'design_color: ' . $design_color;
それで、それらを持っているので、テーブルに挿入したいと思います-
$qry = $pdo->prepare("INSERT INTO inventory (name, main_pic, product_pic, more_pic, paypal_code, category_id, price, description, product_color, design_color)
VALUES (:name, :main_pic, :product_pic, :more_pic, :paypal_code, :category_id, :price, :description, :product_color, :design_color)");
$qry-> bindParam(':name', $name);
$qry-> bindParam(':main_pic', $main_pic);
$qry-> bindParam(':product_pic', $product_pic);
$qry-> bindParam(':more_pic', $more_pic);
$qry-> bindParam(':paypal_code', $paypal_code);
$qry-> bindParam(':category_id', $category_id);
$qry-> bindParam(':price', $price);
$qry-> bindParam(':description', $description);
$qry-> bindParam(':product_color', $product_color);
$qry-> bindParam(':design_color', $design_color);
$qry-> execute();
これは実行されません-そして、理由を確認するためにエラーをログに記録する最良の方法がわかりません。変数を手動で割り当てて、以前の$ _POSTシェナニガンをコメントアウトすると、すべてが機能しているように見え、INSERTは正常に実行されます。
手がかりはありますか?データベースが特定の変数タイプを予期しているためかもしれないと思いましたが、私はそれを十分に調査したと思います。
変数を手動で割り当てることは機能するが、$ _ POSTから変数を取得することは機能しない理由を知っている人はいますか?
編集:これらの提案に従って、エラーメッセージSQLSTATE [23000]が表示されます:整合性制約違反:1062キー1のエントリ「0」が重複しています
了解しました。この挿入を試しているときに、一意の主キーを割り当てていません。PDOがそれを処理することを前提としていました。一意の主キーの割り当てを処理するための最良の方法は何ですか?ユーザーが手動で割り当てることは避けたいです。