我正在为此烦恼-希望这是一个容易的疏忽。
我计划使用 jQuery AJAX 函数向这个 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 Duplicate entry '0' for key 1
好吧,所以当我尝试这个插入时,我没有分配唯一的主键——我假设 PDO 会处理这个问题。处理分配唯一主键的最佳方法是什么?我想避免让用户手动分配它。