2012-05-19 47 views
0

我的代碼有什麼問題? 基本上我想要做的是添加一個數字並更新與變量連接的sql中的字段。但由於steamids這個樣子STEAM_0:0:123123123STEAM_0:1:123123123我得到這個如何正確更新查詢

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「:0:14166834」在行1

這僅僅是學習,所以我知道我的代碼有沒有用回聲,但它只是看到它被添加,並確保我在做它正確反正

addmoney.php

<?php 
include("inc/config.php"); 
$mysteamid=mysql_real_escape_string($_POST['mysteamid']); 

$sql = "SELECT * FROM $tbl_name WHERE steamid='$mysteamid'"; 
$result=mysql_query($sql); 
$cash=mysql_result($result, 0, 'cash'); // outputs 7th 
echo $cash; 
$newcash= $cash + "10000"; 
echo "\n"; 
echo $newcash; 
mysql_query("UPDATE $tbl_name SET `cash` = $newcash WHERE `steamid` = $mysteamid") or  die(mysql_error()); 
?> 

index.php文件包含一個工作FORMDATA它不是真的,在我的代碼中的錯誤要求。 我的主要問題是addmoney.php這行是

$mysql_query("UPDATE $tbl_name SET `cash` = $newcash WHERE `steamid` = $mysteamid") or die(mysql_error()); 
+0

「steamid」列的類型是什麼? – Amarnasan

+0

桌子的模式是什麼?現金是一個int還是一個varchar?你的報價非常不一致。要麼總是使用''圍繞表或列名稱,要麼永遠不要。將一個數字視爲文本(在php中使用'或',在'sql'中)或將其視爲數字, – Julian

+0

也可以考慮使用預準備語句而不是在SQL中包含變量。 – Julian

回答

1

在你的數據庫的steamid領域是一個字符串(好像是,因爲可能的值是STEAM_0:0:123123123STEAM_0:1:123123123,您必須使用引用角落找尋值:

mysql_query("UPDATE $tbl_name SET `cash` = $newcash WHERE `steamid` = '$mysteamid'"); 


使用mysql_real_escape_string()是必要的,因爲它裏面逃逸報價你傳遞變量它作爲參數 - 但您仍然必須在您的SQL查詢中將引號環繞字符串。

+0

謝謝你爲我解釋這個,你真是太棒了我很感激 – user1332318

+0

很高興能幫到你:-) –

0

在第一個查詢中,您用簡單的引號括住了$ mysteamid值,而在第二個查詢中沒有。如果蒸汽是一種字符串類型,則需要用引號括起該值,如

"UPDATE $tbl_name SET `cash` = $newcash WHERE `steamid` =' $mysteamid'" 
+0

謝謝你的幫助我非常感謝你的幫助! – user1332318