Обновление значений таблицы в массиве

#php #arrays #mysqli

#php #массивы #mysqli

Вопрос:

У меня есть таблица, затем я хочу обновить значения таблицы в массиве. Используя соответствующий идентификатор.Я использую REPLACE INTO , но все строки обновляются каждый раз. Так что я не хочу. У меня есть только обновление, если какое-либо значение изменяется в массиве, который соответствует идентификатору транзакции. (Извините за мой плохой язык) смотрите мой пример

 $tbtransaction = array(
    array(
        "TransactionID" => 16,
        "VoucherType" => "Cash Payment",
        "AccName" => "OFFICE EXPENSE",
        "Particulars" => "CASH ACCOUNT",
        "Debit" => 2000,
        "Credit" => 50,
    ),
    array(
        "TransactionID" => 17,
        "VoucherType" => "Cash Payment",
        "AccName" => "OFFICE EXPENSE",
        "Particulars" => "CASH ACCOUNT",
        "Debit" => 1250,
        "Credit" => 350,
    ),
    array(
        "TransactionID" => 18
        ,
        "VoucherType" => "Bank Payment",
        "AccName" => "Simple EXPENSE",
        "Particulars" => "CASH ACCOUNT",
        "Debit" => 410,
        "Credit" => 0,
    ),
    array(
        "TransactionID" => 19,
        "VoucherType" => "Cash Payment",
        "AccName" => "OFFICE EXPENSE",
        "Particulars" => "CASH ACCOUNT",
        "Debit" => 2000,
        "Credit" => 0,
    ),
    array(
        "TransactionID" => 20,
        "VoucherType" => "Cash Payment",
        "AccName" => "OFFICE EXPENSE",
        "Particulars" => "CASH ACCOUNT",
        "Debit" => 25,
        "Credit" => 40,
    ),

);
 

Таблица транзакций

 TransactionID   VoucherType    AccName          Particulars    Debit  Credit
--------------------------------------------------------------------------------
16           Cash Payment   OFFICE EXPENSE     CASH ACCOUNT    2000     50
17           Cash Payment   OFFICE EXPENSE     CASH ACCOUNT    1250     300
18           BankPayment    OTHER EXPENSE      OTHER ACCOUNT   410      10
19           Cash Payment   TRAVEL EXPENSE     BANK ACCOUNT    300       0
20           Cash Payment   OFFICE EXPENSE     CASH ACCOUNT    25       40
 

Комментарии:

1. Вы должны сначала извлечь элемент из базы данных, а затем сравнить их с тем, который у вас есть в массиве (использовать array_intersect ), а затем обновить только их

2. или, может быть, вы можете применить foreach с помощью команды update, где вы используете данные дочернего массива для обновления записи таблицы для соответствия id , если будут какие-либо изменения, которые будут сохранены, в противном случае они будут продолжены для следующего дочернего массива

3. @AlivetoDie Как использовать это в foreach я использовал, но я не могу правильно, пожалуйста, приведите какой-нибудь пример

4. @bluemeadia что-то вроде этого: — foreach( $tbtransaction as $tbtransact ){ $stmt = $mysqli->prepare("UPDATE <table name> SET VoucherType AccName =? , Указывает =?, данные =?, дебетовой =?, =? WHERE кредитной =?"); $stmt->bind_param('sssiii',$tbtransact['VoucherType'], $tbtransact['AccName'], $tbtransact['Particulars'], $tbtransact['Debit'],$tbtransact['Credit'],$tbtransact['TransactionID']); $stmt->execute(); } транзакции. Вы можете использовать пример mysqli кода из этой темы для справки по коду:- php.net/manual/en/mysqli-stmt.bind-param.php