コードには、データベースへの 6 ~ 8 個のクエリがある場所がほとんどありません。さまざまなクエリ (選択、挿入、更新、プロシージャ コール) は、すべてのクエリを 1 つにマージすることはできません。必要ですが、機能自体は見栄えがよくありません。それでも、リクエストにいくつかの変数をアタッチする機能も必要です。
おそらく、誰かがそのようなものを持っているか、この機能を修正するのを手伝ってくれます.
更新: 問題は解決されました。
function execSql($conn,$xsql,$sql_no,$return_val,
$binding_val_name,$binding_val,
$bind_additional1,$bind_additional2){
$stmt = oci_parse($conn, $xsql);
if($binding_val_name !='')
if($bind_additional1)
oci_bind_by_name($stmt, $binding_val_name,
$binding_val,$bind_additional1,$bind_additional2);
else
oci_bind_by_name($stmt, $binding_val_name, $binding_val);
oci_execute($stmt, OCI_NO_AUTO_COMMIT);
if($return_val!='')
oci_fetch_all($stmt,$result);
checkError($stmt,$sql_no.'. '.$xsql);
oci_free_statement($stmt);
if($return_val!=''&&$return_val!='1')
return $result[$return_val][0];
if($binding_val_name!='')
return $binding_val;
}
および呼び出しの例
$doc = execSql($conn, $sql,'2', '',':doc','',8, SQLT_INT);
$reg_key = execSql($conn, $select,'3', 'REG_KEY',':doc',$doc);
配列の使用
if($binding_val_name !='')
if(is_array($binding_val))
if($bind_additional1[0])
for ($i=0; $i < count($bind_additional1) ; $i++) {
oci_bind_by_name($stmt, $binding_val_name[$i],
$binding_val[$i],$bind_additional1[$i],$bind_additional2[$i]);.
}
else
for ($i=0; $i < count($bind_additional1) ; $i++) {
oci_bind_by_name($stmt, $binding_val_name[$i], $binding_val[$i]);
}
else
if($bind_additional1)
oci_bind_by_name($stmt, $binding_val_name,
$binding_val,$bind_additional1,$bind_additional2);
else
oci_bind_by_name($stmt, $binding_val_name, $binding_val);