Как предотвратить вставку в базу данных, если значение равно нулю?

53
7

Я работаю над проектом, а затем у меня возникла эта проблема. Вот сценарий, когда я вставляю в базу данных, он не должен вставляться, если значение равно нулю, но тогда, когда я проверяю свою базу данных, встают нули, я не знаю, где я ошибаюсь, или просто пропустил что если значение равно нулю, то оно не должно вставляться.

Вот код:

$ref_array = explode(',' , $ref_number);
$po_array = explode(',' , $po_number);
$inv_array = explode(',' , $inv_number);
$asn_array = explode(',' , $asn_number);
$adj_array = explode(',' , $adj_number);
$amount_array = explode(',' , $amount);

// count the number of po,invoice,asn and adj
if(count($po_array) != count($ref_array) || count($inv_array) != count($ref_array) || count($asn_array) != count($ref_array) || count($adj_array) != count($ref_array) || count($ref_array) != count($amount_array)){

foreach ($ref_array as $i => $ref_num){
$po_num = isset($po_array[$i]) ? $po_array[$i] : '' ; //leave blank there is no $po_array[$i]
$inv_num = isset($inv_array[$i]) ? $inv_array[$i] : '';
$asn_num = isset($asn_array[$i]) ? $asn_array[$i] : '' ;
$adj_num = isset($adj_array[$i]) ? $adj_array[$i] : '' ;
$amount_num = isset($amount_array[$i])? $amount_array[$i] : '';

if(intval($ref_num) != 0 ){

$conn->query ("INSERT INTO transaction_detail ('transaction_id','ref_number','po_number','inv_number','asn_number','adj_number','amount')
VALUES ('$transaction_id','$ref_num','$po_num','$inv_num','$asn_num','$adj_num','$amount_num') " );
}
}
}

Может кто-нибудь мне помочь?

спросил(а) 2015-06-30T08:26:00+03:00 4 года, 9 месяцев назад
1
Решение
51

Вы просто удаляете intval из своего условия, потому что оно используется для Get the integer value of a variable.

Вторая контрольная переменная $ref_num больше нуля

вы будете

if(($ref_num) >0 ){

Также читайте intval()

ответил(а) 2015-06-30T11:18:00+03:00 4 года, 9 месяцев назад
37

Проверьте таблицу transaction_detail, задали ли значение по умолчанию значение 0 для поля po_number.

ответил(а) 2015-06-30T08:34:00+03:00 4 года, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема