2017-08-04 47 views
-2

我有一個MySQL 'udate'查詢與'where'條件檢查'$mobile'與表 column_field 'Mobile',如果從'textfield''where' 條件的值不匹配table column_field(然後更新 不會發生在錶行上)。 如果'where'條件不匹配在表column_field上 'Mobile'='$mobile',我如何在php代碼上打印「錯誤消息」。mysql的,如果「其中」,那麼子句條件未能打印PHP的「消息」其他更新的行

<?php 

$sql ="update mytable set total_amount = total_amount + '$total_amt', 
remaning_points = earned_points - redeemed_points where Mobile = '$mobile'"; 
$result = query($sql); 
if (!$result) 
{ 
    echo "USER NOT EXISTING"; 
    exit; 
} 
else 
{ 
    echo "UPDATED"; 
} 
?> 
+0

您可以將您的消息放入會話並重定向到該特定頁面。 'echo'你的會話變量並在其下面取消設置。 – Narayan

+1

查詢是用戶定義的函數? – JYoThI

+0

請向我們展示'query()'函數。這不是香草PHP代碼,所以我們不知道'query()'的作用或者你正在使用哪個PHP數據庫API – RiggsFolly

回答

-1

你見過mysql函數mysql_affected_rows()

它返回您的更新查詢影響了多少行/ entrys。如果這個函數返回零(0),那麼它「失敗」(用戶不存在)。

0

您可以按照這裏的回答或評論輕鬆完成此操作,但執行此類操作的理想方法是在數據庫中插入/更新任何內容之前檢查是否存在該記錄。

$query = 'select * from table where mobile="' . $mobile . '"'; 
$result = mysqli_query($con,$query); 
if ($result->num_rows > 0) { 
    $query = 'update mytable set total_amount = total_amount + ' . $total_amt . ', 
remaning_points = earned_points - redeemed_points where Mobile = "' . $mobile . '"'; 
    $result = mysqli_query($con,$query); 
} 
else { 
    echo "No record matched"; 
} 

您可以通過使用SessionGET發送該消息給其他頁面。這將使您的代碼確保ACID數據庫的屬性。它應該在執行數據操縱語言(DML)語句之前執行檢查。

+0

當然,假設OP使用'mysqli_' API – RiggsFolly

+0

當然,你可以使用API可用,除非它在執行數據操縱語言(DML)語句之前執行檢查。 –

+0

'$ total_amt'附近缺少'concatenation operator' – JYoThI