кода:Failed или успех запрос всегда возвращает истинный
$new_deb = 5;
//prepare query();
$q = 'START TRANSACTION;';
for($l = 0; $l < $cond; $l++){
if($uploaded == 0 || $uploaded == "0"){
$q .= ' INSERT INTO vocher (`vo_type_id`, `account_id`, `value`, `desc`, `user_id`, `status_id`, `date`, `debtor_id`)';
$q .= ' VALUES ("'.$vouchertype.'", "'.$voucheracc[$l].'","'.$vdebvalue[$l].'", "'.$vdebdesc[$l].'","'.$_POST['usrSes'].'", "'.$status.'","'.$vocherdate[$l].'", "'.$new_deb.'");';
}else{
$q .= ' INSERT INTO vocher (`vo_type_id`, `account_id`, `value`, `desc`, `user_id`, `status_id`, `date`, `debtor_id`, `link`)';
$q .= ' VALUES ("'.$vouchertype.'", "'.$voucheracc[$l].'","'.$vdebvalue[$l].'", "'.$vdebdesc[$l].'","'.$_POST['usrSes'].'", "'.$status.'","'.$vocherdate[$l].'", "'.$new_deb.'", "'.$newAttach.'");';
}
$q .= ' SET @lastId = (SELECT `id` FROM vocher ORDER BY `id` DESC LIMIT 1);';
if($voCc[$l] != 'e'){
for($h = 0; $h < count($voCc[$l]); $h++){
if($voCc[$l][$h] != 'e'){
$q .= ' INSERT INTO voucher_cc (`voucher`, `cc`) VALUES (@lastId, "'.$voCc[$l][$h].'");';
}
}
}
if(in_array($voucheracc[$l], $inResetAccs)){
$q .= ' INSERT INTO resets (`type`, `acc`, `user`, `value`, `desc`, `debtor_id`, `date`, `status`)';
$q .= ' VALUES ("IN", "'.$voucheracc[$l].'", "'.$_POST['usrSes'].'", "'.$vdebvalue[$l].'", "'.$vdebdesc[$l].'", "'.$new_deb.'", "'.$vocherdate[$l].'", "1");';
}
}
for($z = 0; $z < $chqradiolength; $z++){
if ($chqradio[$z] == "0") {
$q .= ' INSERT INTO creditor (`acc_id`, `value`, `bank_id`, `debtor_id`, `cheque_no`, `issue_date`, `available_date`, `vo_type_id`, `desc`, `date`, `user`)';
$q .= ' VALUES ("'.$chequeAcc[$z].'", "'.$vvalue[$z].'", "'.$banks[$z].'", "'.$new_deb.'", "'.$vsn[$z].'", "'.$issuesdates[$z].'", "'.$availabledate[$z].'", "'.$vouchertype.'", "'.$vdesc[$z].'", "'.$credates[$z].'", "'.$_POST['usrSes'].'");';
$q .= ' SET @creLastId = (SELECT `id` FROM creditor ORDER BY `id` DESC LIMIT 1);';
for($x = 0; $x < count($chequeCc[$z]); $x++){
$q .= ' INSERT INTO creditor_cc (`creditor`, `cc`) VALUES (@creLastId, "'.$chequeCc[$z][$x].'");';
}
}else{
$q .= ' INSERT INTO creditor (`acc_id`, `value`, `debtor_id`, `date`, `desc`, `vo_type_id`, `user`)';
$q .= ' VALUES ("'.$creaccs[$z].'", "'.$vvalue[$z].'", "'.$new_deb.'" , "'.$credates[$z].'" , "'.$vdesc[$z].'" , "'.$vouchertype.'", "'.$_POST['usrSes'].'");';
$q .= ' SET @creLastId = (SELECT `id` FROM creditor ORDER BY `id` DESC LIMIT 1);';
if($creCc[$z] != 'e'){
for($x = 0; $x < count($creCc[$z]); $x++){
if($creCc[$z][$x] != 'e'){
$q .= ' INSERT INTO creditor_cc (`creditor`, `cc`) VALUES (@creLastId, "'.$creCc[$z][$x].'");';
}
}
}
if(in_array($creaccs[$z], $outResetAccs)){
$q .= ' INSERT INTO resets (`type`, `acc`, `user`, `value`, `desc`, `debtor_id`, `date`, `status`)';
$q .= ' VALUES ("OUT", "'.$creaccs[$z].'" , "'.$_POST['usrSes'].'" , "'.$vvalue[$z].'", "'.$vdesc[$z].'" , "'.$new_deb.'", "'.$credates[$z].'", "1");';
}
}
}
$q .= ' COMMIT;';
$vocher_obj->query($q);
$check = $vocher_obj->execute();
if($check){
$res = 1;
}else{
$res = 23;
}
echo $res;
Этого код предназначен для создания некоторых запросов.
Эти запросы всегда возвращают «истину», даже если я изменяю имя таблицы на «не существующую» таблицу в базе данных, тогда как она должна возвращать «ложь»!
Не могли бы вы помочь мне в этом?
вы не должны заполнять несколько запросов запроса одним вызовом запроса. и ваш код по своей сути является ярким. вы не должны использовать 'select ...' для получения последнего сгенерированного идентификатора. есть 'insert_id()'. Нет НИКАКИХ гарантий, что кто-то еще не будет вставлять запись за спину. –
Вот почему я создаю транзакцию, поэтому никто другой не может вставить ее до завершения транзакции. И я использую PDO, а не MYSQLI –
, убедитесь, что ваши настройки транзакций фактически работают в режиме повторного чтения, затем ... –