#php #oracle
#php #Oracle
Вопрос:
Я новичок в PHP-разработчике. Я обновил свой запрос в PHP, используя метод OCI_Parse, я получаю сообщение об ошибке ниже. Мой код и изображение ошибки приведены ниже.
Я знаю, как решить проблему. Пожалуйста, приведите какие-либо примеры запросов на обновление или, пожалуйста, проясните мою проблему
Это моя функция:
static public function notes_recency_data_table_Update($noCircUpdate, $member, $ddate, $ptype) {
$rows = [];
$conn = App::getBizConnection();
$d_date = new DateTime($ddate);
$d_date = date_format($d_date, "d-M-y");
$data_index = 100;
$data_group = '2B';
$line_type = 'PC';
$stub_mic = 'Recency table';
Коллекция Foreach (мой запрос на обновление)
foreach($noCircUpdate as $key => $noCircDataUpdate) {
$clauseId = $noCircDataUpdate['CLAUSE_ID'];
$stub = $noCircDataUpdate['STUB'];
$print = $noCircDataUpdate['PRINT_ONLY'];
$digit = $noCircDataUpdate['DIGIT_ONLY'];
$prd = $noCircDataUpdate['PRINT_DIGIT'];
$oneye = $noCircDataUpdate['R_1_YR'];
$twoye = $noCircDataUpdate['R_2_YR'];
$print_pct = $noCircDataUpdate['PRINT_ONLY_PCT'];
$digit_pct = $noCircDataUpdate['DIGIT_ONLY_PCT'];
$prd_pct = $noCircDataUpdate['PRINT_DIGIT_PCT'];
$oneye_pct = $noCircDataUpdate['R_1_YR_PCT'];
$twoye_pct = $noCircDataUpdate['R_2_YR_PCT'];
$tot = $noCircDataUpdate['CIRCULATION_TOTAL'];
$per = $noCircDataUpdate['CIRCULATION_PERCENTAGE'];
if(isset($stub)) {
$stid = oci_parse($conn, 'UPDATE ABC$PRODUCTION.BPS_RECENCY SET DATA_INDEX=:dataindex, DATA_GROUP=:datagroup, STUB=:stub, R_1_YR=:r_1_yr, R_1_YR_PCT=:r_1_yr_pct, R_2_YR=:r_2_yr, R_2_YR_PCT=:r_2_yr_pct, CIRCULATION_TOTAL=:circ_tot,
CIRCULATION_PERCENTAGE=:circ_perc, LINE_TYPE=:linetype, PRINT_ONLY=:print_only, DIGIT_ONLY=:digit_only, PRINT_DIGIT=:print_digit, PRINT_ONLY_PCT=:print_only_pct, DIGIT_ONLY_PCT=:digit_only_pct, PRINT_DIGIT_PCT=:prd_pct, STUB_MIC=:stub_mic WHERE
MEMBER_NUMBER=:member_num AND DRIVE_DATE=TO_DATE(:drive_date) AND PRODUCT_TYPE = :product_type');
oci_bind_by_name($stid, ":dataindex", $data_index);
oci_bind_by_name($stid, ":datagroup", $data_group);
oci_bind_by_name($stid, ":stub", $stub);
oci_bind_by_name($stid, ":r_1_yr", $oneye);
oci_bind_by_name($stid, ":r_1_yr_pct", $oneye_pct);
oci_bind_by_name($stid, ":r_2_yr", $twoye);
oci_bind_by_name($stid, ":r_2_yr_pct", $twoye_pct);
oci_bind_by_name($stid, ":circ_tot", $tot);
oci_bind_by_name($stid, ":circ_perc", $per);
oci_bind_by_name($stid, ":linetype", $line_type);
oci_bind_by_name($stid, ":print_only", $print);
oci_bind_by_name($stid, ":digit_only", $digit);
oci_bind_by_name($stid, ":print_digit", $prd);
oci_bind_by_name($stid, ":print_only_pct", $print_pct);
oci_bind_by_name($stid, ":digit_only_pct", $digit_pct);
oci_bind_by_name($stid, ":print_digit_pct", $prd_pct);
oci_bind_by_name($stid, ":stub_mic", $stub_mic);
oci_bind_by_name($stid, ":member_num", $member);
oci_bind_by_name($stid, ":drive_date", $d_date);
oci_bind_by_name($stid, ":product_type", $ptype);
$res = oci_execute($stid);
if( $res ){
echo "OKn";
} else {
$error = oci_error($stid);
echo "Error: " . $error['message'] . "n";
}
$data_index ;
}
}
App::closeConnection($conn, $stid);
return true;
}
ошибка ora-01008 связана с появлением этой ошибки, как я могу устранить ошибку. я не о oracle. пожалуйста, устраните ошибку.
Комментарии:
1.
:prd_pct
в вашем запросе не совпадает:print_digit_pct
с вашим oci_bind_by_name2. Спасибо, Айнбер. Я изменю это.
3. @aynber Я изменю запрос, но снова та же ошибка.
4. Ищите другие несоответствующие имена. Не связанный с ошибкой, изучите отправку данных в виде массивов с
oci_bind_array_by_name()
последующим выполнением ОБНОВЛЕНИЯ в блоке PL / SQL с использованием FORALL. Это может быть быстрее, чем многократный вызов oci_execute. См. Раздел «Привязка массива и массовая обработка PL / SQL» на стр. 194 The Underground PHP и Oracle Manual .5. @ChristopherJones Ок. Спасибо