如何正确更新查询

时间:2012-05-19 17:11:40

标签: php mysql

我的代码有什么问题? 基本上我正在尝试做的是添加一个数字并使用连接到变量的内容更新sql中的字段。但是,因为加速器看起来像STEAM_0:0:123123123STEAM_0:1:123123123我得到了这个

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行':0:14166834'附近使用正确的语法

这只是为了学习,所以我知道我的代码有无用的回声,但它只是为了看到它被添加并确保我正确地做到了

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()); 

2 个答案:

答案 0 :(得分:1)

由于您的数据库中的steamid字段是字符串(似乎值,STEAM_0:0:123123123STEAM_0:1:123123123,您必须使用引用值:

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


使用mysql_real_escape_string()是必要的,因为它会将您传递给它的变量中的引用作为参数 - 但您仍然需要在字符串中添加引号 arround 你的SQL查询。

答案 1 :(得分:0)

在第一个查询中,您使用简单引号包围了$ mysteamid值,而在第二个查询中则没有。如果steamid是字符串类型,则需要用引号括起值,例如

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