我創建使用Apache Web服務器(phpMyAdmin的)插入行裏面PHP
一個PHP的網站外鍵的表我有3個表:
- 品牌
- brand_id(PRIMARY KEY)自動遞增
- BRAND_NAME
- 項目
- ITEM_ID(PRIMARY KEY)AUTO INCREMENT
- item_category
- 模型
- MODEL_ID(PRIMARY KEY)AUTO INCREMENT
- item_model
- brand_id(對於brand.brand_id外鍵)
- brand_name(item.item_id的FOREIGN KEY)
- 數量
- 價格
我有一個問題,當我想插入新值模型表格。
這是我使用的插入
if (isset($_POST['brand_id']));
$brand = ($_POST['brand_id']);
if (isset($_POST['item_id']));
$cat = ($_POST['item_id']);
if (isset($_POST['model']));
$model = ($_POST['model']);
if (isset($_POST['quantity']))
$quantity = ($_POST['quantity']);
if (isset($_POST['price']))
$price = ($_POST['price']);
$sql = "INSERT INTO model (item_model, brand_id, item_id, quantity, price)
VALUES ('$model', '$brand', '$cat', '$quantity', '$price')";
請注意,我沒有插入任何值到MODEL_ID,因爲我認爲它會自動增加,因爲這是自動遞增PHP代碼。我不知道我是對還是錯。 isset值是從另一個PHP文件傳遞的。所以這個PHP基本上只是捕獲以前的PHP文件拋出的值。
我曾試圖從phpMyAdmin的使用SQL語句直接插入值,它會產生這樣的錯誤:
Cannot add or update a child row: a foreign key
constraint fails (`stock`.`model`, CONSTRAINT `fk_item_brand`
FOREIGN KEY (`brand_id`) REFERENCES `brand` (`brand_id`) ON UPDATE CASCADE)
,如果我試圖把價值ID入列的一個,它會產生一個錯誤:
SQL query:
INSERT INTO `model`(`model_id`, `item_model`, `brand_id`, `item_id`, `quantity`, `price`)
VALUES (1,'a','1','1','a','a')
MySQL said: Documentation
#1062 - Duplicate entry '1' for key 'PRIMARY'
如何在PHP中使用外鍵向表中插入一行?
「我有問題」 - 問題是什麼?你正在做正確的自動增量。 – Barmar 2014-09-11 08:03:39
你是對的,你不需要包含自動增量值。我真的不喜歡的是你如何直接在你的SQL命令中插入URL參數。不要這樣做,永遠。閱讀更多關於SQL注入在這裏:http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – 2014-09-11 08:05:08
你有一些額外的分號在那裏你的'如果'語句。他們可能是問題。或者,如果你的某個變量沒有被實例化,可能會失敗,因爲沒有設置相應的'$ _POST'變量。無論如何,我會通過'POST'(例如類型和/或長度)來檢查傳遞給這個頁面的內容,也許使用'filter_var()',並且我會使用預處理語句並將這些值綁定到語句。 – 2014-09-11 08:05:26