Я отметил предупреждение, что существуют посты с похожими названиями, но они не демонстрируют проблему, с которой я столкнулся. Они относятся к вопросам ajax и тайм-аута, которые я не думаю, что у меня есть.
Функция php ниже вызывается для вставки деталей из веб-формы в базу данных mysql. Эта функция возвращает значение, но, к сожалению, она всегда возвращает «Ошибка, -4». Это означает, что:
но:
Я ввел много вызовов журнала, чтобы попытаться решить проблему самостоятельно, но я достиг предела моего понимания mysql.
Как вы можете видеть, я также включил тест подключения к базе данных MySQL. Все, (php, mysql и firefox) работают на одном физическом хосте.
function submit_new_prod_code_request($BULK_LIQUID_CODE,$PROD_DESC,
$SKU_TYPE,$SKU_PROD_NAME,
$SKU_PROD_DESC,
$SUBUNIT_VOL,$SUBUNITS,$LITRE_PER_UNIT,
$PERC_ALC,$CN_CODE,$ERN_CODE,
$ERN_CODE_DOMESTIC,
$VAT_APP, $VAT_RATE,
$DUTY_RATE,$DUTY_PER_UNIT,
$TENANT,
$PH_MIN,$PH_MAX,
$ACID_MIN,$ACID_MAX,
$COLOUR_MIN,$COLOUR_MAX,
$TURBIDITY,
$EAN_BOTTLE,$EAN_PALLET,$PALLET_TYPE,
$LAYERS_PER_PALLET,$CASES_PER_LAYER,
$BOTTLE_TYPE,$BOTTLE_CLOSURE,
$CASE_CODE,$DIVISION,
$BRIX_MIN,$BRIX_MAX,
$GIFT,
$db,$log,$session){
$submit_success = -1;
if ($db->connect_error) {
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree db connection test: '.$db->connect_error);
}
else{
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree db connection test: connected');
}
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree connection status:'.$db->stat());
//submit new prod code to product tree
$sql_str=$db->prepare("INSERT INTO product_tree (BULK_LIQUID, DESCRIPTION, SKU_TYPE, SKU_PROD_NAME, SKU_PROD_DESC, SUBUNIT_VOL, SUBUNIT, LITRES_PER_UNIT, PERC_ALC, CN_CODE, ERN_CODE, ERN_CODE_DOMESTIC, VAT_APPLICABLE, VAT_RATE, DUTY_RATE, DUTY_PER_UNIT, tenant_name, ph_min, ph_max, acid_min, acid_max, colour_min, colour_max, turbidity, ean_bottle, ean_pallet, pallet_type, layers_per_pallet, cases_per_layer, bottle_type, closure, case_code, division, perc_brix_min, perc_brix_max, GIFT_PACK) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
if(!$sql_str){
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Code Create Error 1: '.$db->error);
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Code Create Error 1: '.$sql_str->error);
$ret=array('Error:',-1);
}
else{
$rs=$sql_str->bind_param('sssssddddssssdddsdddddddsssddssssdds',$bulk_liquid_code,$PROD_DESC,$SKU_TYPE,$SKU_PROD_NAME,$SKU_PROD_DESC,$subunit_vol,$subunits,$litre_per_unit,$perc_alc,$CN_CODE,$ERN_CODE,$ERN_CODE_DOMESTIC,$VAT_APP, $VAT_RATE, $DUTY_RATE,$DUTY_PER_UNIT,$tenant,
$PH_MIN,$PH_MAX,
$ACID_MIN,$ACID_MAX,
$COLOUR_MIN,$COLOUR_MAX,
$TURBIDITY,
$EAN_BOTTLE,$EAN_PALLET,$PALLET_TYPE,
$LAYERS_PER_PALLET,$CASES_PER_LAYER,
$BOTTLE_TYPE,$BOTTLE_CLOSURE,
$CASE_CODE,$DIVISION,
$BRIX_MIN,$BRIX_MAX,
$GIFT);
if(!$rs){
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Code Create Error 2: '.$sql_str->error);
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Code Create Error 2: '.$db->error);
$ret=array('Error:',-2);
}
else{
$didwork=$sql_str->execute();
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create did it work?: '.gettype($didwork));
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create did it set?: '.isset($didwork));
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create did it work?: '.$didwork);
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create did it work?: '.is_null($didwork));if(!$sql_str){
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create Error 2: '.$sql_str->error);
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create Error 2: '.$db->error);
$ret=array('Error:',-3);
}
else{
if($didwork==1){
$ret=array('Success:',1);
}
else{
$ret=array('Error:',-4);
}
}
}
}
$sql_str->close();
return $ret;
}
Вот конец журнала с той частью, которая, по моему мнению, лежит в основе проблем:
[31 / Aug / 2017: 10: 18: 34] (check_for_duplicate_sku) ФИО ПОЛЬЗОВАТЕЛЯ Тест соединения с БД Prod Tree: подключенВторая последняя строка файла журнала должна (как я понимаю) быть 1 или 0 (логическое значение), а последняя строка is_null также должна быть логической, но оба возвращаются без значения (что я могу видеть, чтобы увидеть). У кого-нибудь есть какие-либо идеи? Я что-то упускаю из виду? Я подозревал, что соединение оборвалось или возникла проблема с тайм-аутом, поэтому я проверил и проверил соединение. Любые идеи и мысли приветствуются.
РЕДАКТИРОВАТЬ 1:
$ vardump = var_export ($ didwork, true);
$ log-> lwrite ($ session [‘first_name’]. ». $ session [‘last_name’]. ‘Prod Tree Create VAR DUMP:’. $ vardump);
[31 / Aug / 2017: 11: 33: 56] (check_for_duplicate_sku) ФАМИЛИЯ ПОЛЬЗОВАТЕЛЯ Prod Tree Создать VAR DUMP: falsevar_export возвратил false, которое, я думаю, является предполагаемым поведением для логического значения в соответствии с: http://php.net/manual/en/function.var-export.php
РЕДАКТИРОВАТЬ 2:
ob_start();
var_dump($didwork);
$result = ob_get_clean();
$log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create VAR DUMP: '.$result);
[31 / Aug / 2017: 12: 15: 32] (check_for_duplicate_sku) ФАМИЛИЯ ПОЛЬЗОВАТЕЛЯ Prod Tree Создание VAR DUMP: bool (false)
var dump, по-видимому, помечает возвращаемый тип как логическое (ожидаемое), но указывает ли (false) значение логического значения на false? или не установлен?
Задача ещё не решена.
Других решений пока нет …