#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