0
私はテーブルのいずれかで簡単なレンタカーシステムを作るしようとしている:車PHPを使用してoracleのストアドプロシージャからエラーを取得するには?
CREATE TABLE "WILSON"."CAR"
( "CAR_ID" VARCHAR2(20 BYTE),
"CAR_PLATE" VARCHAR2(7 BYTE) NOT NULL ENABLE,
"CAR_MODEL" VARCHAR2(30 BYTE) NOT NULL ENABLE,
"CAR_COLOR" VARCHAR2(30 BYTE) NOT NULL ENABLE,
"CAR_STATUS" VARCHAR2(30 BYTE) NOT NULL ENABLE,
"CAR_CATEGORY" VARCHAR2(15 BYTE) NOT NULL ENABLE,
CONSTRAINT "CAR_STATUS_CHK" CHECK (CAR_STATUS IN ('AVAILABLE','NOT AVAILABLE','MAINTENANCE')) ENABLE,
PRIMARY KEY ("CAR_ID"),
CONSTRAINT "CAR_UNIQUE" UNIQUE ("CAR_PLATE", "CAR_MODEL", "CAR_COLOR")
);
新しい車を挿入するストアドプロシージャで:
create or replace procedure insert_car_proc(plateno varchar2, car_model varchar2, color varchar2, cate_id varchar2)
is
begin
insert into car(car_plate, car_model, car_color, car_category) values (plateno, car_model, color, cate_id);
end;
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$plateno = $_POST['platenoInput'];
$model = $_POST['modelInput'];
$color = $_POST['colorInput'];
$category = $_POST['category'];
// var_dump($plateno, $model, $color, $category);
$stmt = $conn->prepare('begin insert_car_proc(?,?,?,?); end;');
try{
$stmt->bindParam(1, $plateno);
$stmt->bindParam(2, $model);
$stmt->bindParam(3, $color);
$stmt->bindParam(4, $category);
$stmt->execute();
echo 'success';
}catch(Exception $e){
echo $e->getMessage();
}
}
それは新しい車を挿入することができますしかし、私は3列(car_color、car_plate、car_model)の制約を持っているので、私は約についてユーザーを表示するためにPHPを使用してエラーを取得したい '同じ車が存在しました。再度チェックしてください。どうすればいいですか?