2015-05-05 130 views
1

我需要通過添加或減去數值來更新當前數據庫字段值。我回顧了「建議的答案」,但沒有找到解決我的問題的方法。我的數據庫中的字段是標題「信用」,它的默認值爲「0」。指定的數據庫引擎是InnoDB。我使用的程序的PHP編碼和下面是我在本次代碼:增量更新數據庫字段

所定義的變量

$id=$_SESSION['user_id']; //id number for user 
    $amount=$_POST['Amount']; //value of charges 12 character string 
    $amount=ltrim($amount, '0'); //eliminates leading 0's 
    $credit=$amount/1000; //converts value to credits 
    $credit=number_format($credit, 2); //formats credits with two decimal points 

我然後建立一個數據庫連接,並執行以下查詢

$q="select credits from registration WHERE user_id=$id"; 
    $r=mysqli_query ($dbc, $q); 
    $update="UPDATE registration SET credits = credits + $credit WHERE user_id=$id"; 

如果我「回聲」的變量我看到所有的值,但「更新」失敗。使用程序化PHP編碼,需要修改哪些內容以逐步更新「信用」字段?

+0

列'credits'的類型是什麼,你得到什麼錯誤? – Alfwed

+0

該列是一個smallint(7),我沒有收到錯誤消息。 – Learner

+0

不確定,但看起來像你試圖將浮點數保存爲整數 –

回答

0
//**i hope this helps** 

<?php 
$id=$_SESSION['user_id']; //id number for user 
$amount=$_POST['Amount']; //value of charges 12 character string 
$amount=ltrim($amount, '0'); //eliminates leading 0's 
$credit=$amount/1000; //converts value to credits 
$credit=number_format($credit, 2); //formats credits with two decimal points 

$credits; // the credits from query select will be stored here 

/* edit with your database parameters */ 
     $mysqli = new mysqli($host, $user, $password, $db); 

     if(mysqli_connect_errno()) { 
      echo "Connection Failed: " . mysqli_connect_errno(); 
      exit(); 
     } 

     mysqli_set_charset($mysqli,"utf8"); 

if($stmt = $mysqli -> prepare("select credits from registration WHERE user_id=?")) 
{ 
$stmt -> bind_param("i", $id); //'i' means that ? is an integer value, and $id is the parameter for this value 
$stmt -> execute(); 
$stmt -> bind_result($credits); 
$stmt -> fetch(); 
$stmt -> close(); 

$total=$credits+$credit; 
if($stmt = $mysqli->prepare("UPDATE registration SET credits = ? WHERE user_id=?")) 
{ 
    $stmt->bind_param("di",$total,$id); 
    $stmt->execute(); 
    echo 'oki doki'; 
    $stmt->close(); 
} 

} 

?> 
+0

但丁,我決定按照你的建議來做「$總= $ credit + $ credit」的方法,你的迴應激勵我擴展自己的知識。我確實需要更多地瞭解準備好的語句和綁定參數。謝謝。 – Learner

0

對於關閉,我想提供解決我的問題的代碼,它可以幫助任何人查看此帖子。我確實認爲但丁的解決方案使用「準備好的陳述」是最好的,但這裏是我如何解決我的問題。

行代碼添加的:

$row = mysqli_fetch_array($r, MYSQLI_ASSOC); 
    $cr= sprintf ("%s", $row["credits"]); //assign results to a variable 

    $ttl=$cr+$credit; 

修訂的更新查詢:

$update="UPDATE registration SET credits=$ttl WHERE user_id=$id"; 
    $r = mysqli_query ($dbc, $update) or trigger_error("Query: $update\n<br />MySQL Error: " . mysqli_error($dbc)); 

這工作就好了,我需要$ TTL和$信貸變量在我的信息給用戶。我希望這有幫助。