PHP MySQL: Ustunni tanlang va oxirgi joriy qiymatini yangi qo'shing

mysql-ning ma'lum bir ustunidan so'nggi qiymatni yangi qiymat bilan qo'shishga harakat qilaman.

$ Natijada menga hech narsa qaytarilmaydi.

ex: so'nggi qiymat = 100, value5 = 50, yangi qiymat 150 bo'lishi kerak.

       //Read values into table.
        $sql = "SELECT specific_column FROM data WHERE id=LAST_INSERT_ID()";
        $result = mysqli_query($conn, $sql);

       //Insert values into table.
        $sql = "INSERT INTO data (column1, column2, column3, column4, specific_colum)
        VALUES ($value1, $value2, $value3, $value4, $result+$value5 )";
0

6 javoblar

$result is mysqli object .you can not get column value directly.You need to fetch row values first like this..

$row = mysqli_fetch_assoc($result);
$last_value = $row['specific_column'];
$update_value = $last_value+$value5;//now update $update_value in database

mysqli_fetch_assoc() funktsiyasi natija qatorini assotsiativ qator sifatida keltiradi.

1
qo'shib qo'ydi
Qo'shib olgandan so'ng buni sinab ko'ring. Aks holda last_insert_id() NULL bo'ladi. NULL + biror narsa har doim NULL.
qo'shib qo'ydi muallif Hek mat, manba
echimingizni sinab ko'rdim, $ last_value hech narsa bermadi ","
qo'shib qo'ydi muallif Limehaze, manba
o'qishga harakat qilaman;)
qo'shib qo'ydi muallif Limehaze, manba

MysQLi-dan foydalanasizmi?

Siz sinab ko'rdingizmi:

$sql = "INSERT INTO ....";

if ($conn->query($sql) === TRUE) {
    $last_id = $conn->insert_id;
} else {
    echo "ErrYoki: " . $sql . "
" . $conn->error; }

Yoki:

if (mysqli_query($conn, $sql)) {
    $last_id = mysqli_insert_id($conn);
} else {
    echo "ErrYoki: " . $sql . "
" . mysqli_error($conn); }

Keyin xohlaganingizcha $ last_id dan foydalaning

0
qo'shib qo'ydi

agar siz faqat ba'zi bir N raqami bilan specific_column qiymatini yangilashingiz kerak bo'lsa, ushbu

UPDATE data SET
    specific_column  = @specific_column  := specific_column + $value5
WHERE ..... ;

Shunday qilib, $ value5 = 50 va keyin specific_column 100 + 50 bo'ladi

0
qo'shib qo'ydi
@Limehaze buni tekshirib ko'ring
qo'shib qo'ydi muallif Abdulla Nilam, manba

LAST_INSERT_ID() does not return any values which you instered in row.but it only return ROW ID which you instered or updated in form of 0,1,2 etc or Returns the value generated for an AUTO_INCREMENT column by the previous INSERT or UPDATE statement.

foydalanadi: -

AUTO_INCREMENT maydonini o'z ichiga olgan jadvalga INSERT iborasini amalga oshirganingizdan so'ng yoki LAST_INSERT_ID (expr) bilan ustun qiymatini o'rnatish uchun INSERT yoki UPDATE foydalanganingizdan so'ng ushbu funksiyadan foydalaning.

Qo'shimcha ma'lumot olish uchun

0
qo'shib qo'ydi

Bu erda LAST_INSERT_ID hech narsa qaytara olmaydi

LAST_INSERT_ID() BIGINT UNSIGNED (64-bit) qiymatini qaytaradi   birinchi avtomatik tarzda yaratilgan qiymatni muvaffaqiyatli ifodalaydi   AUTO_INCREMENT ustuniga eng so'nggi kiritilgan INSERT iborasi natijasida qo'shildi. . LAST_INSERT_ID() qiymati   hech qanday satr muvaffaqiyatli qo'shilmagan bo'lsa, o'zgarmadi.

So, in place of LAST_INSERT_ID you can use MAX

$sql = "SELECT specific_column FROM data WHERE id= (select MAX(id) from data)";
$result = mysqli_query($conn, $sql);
0
qo'shib qo'ydi
$sql = "SELECT specific_column FROM data WHERE id= (select MAX(id) from data)";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
$sql = "INSERT INTO data (column1, column2, column3, column4, specific_colum)
        VALUES ($value1, $value2, $value3, $value4, $row['specific_colum']+$value5 )";
0
qo'shib qo'ydi
$ value1 o'rniga "$ value1" so'zini qo'shing
qo'shib qo'ydi muallif Rahul Prajapati, manba
Men sizning echimingizni hozirda sinab ko'rmoqdamiz, 4-satrda ushbu xato paydo bo'ldim: '-' yoki identifikator (T_STRING) yoki o'zgaruvchi (T_VARIABLE) yoki raqam (T_NUM_STRING) kutib turadigan xatoliklar: sintaksik xato, kutilmagan '' (T_ENCAPSED_AND_WHITESPACE)
qo'shib qo'ydi muallif Limehaze, manba
PhP |BotsUz
PhP |BotsUz
93 ishtirokchilar

Phpni o'rganishni Hohlasangiz https://t.me/joinchat/AAAAAE-KRc5dd5tPMmGmWA A'zo bo'lin