0

私のコードの何が問題なのですか? 基本的に私がやろうとしているのは、数値を追加し、変数に接続されているものでSQLのフィールドを更新することです。しかし、steamids はこのように見えるので、STEAM_0:0:123123123またはSTEAM_0:1:123123123私はこれを取得します

SQL 構文にエラーがあります。1 行目の ':0:14166834' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

これは学習のためだけなので、コードに無駄なエコーがあることはわかっていますが、それが追加されていることを確認し、とにかく正しく実行していることを確認するだけです

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 には、コード内のエラーで実際には必要ない作業フォームデータが含まれています。私の主な問題は、addmoney.php のこの行です。

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

2 に答える 2

1

steamidDB のフィールドは文字列であるため (考えられる値はSTEAM_0:0:123123123とのようですSTEAM_0:1:123123123)、値の前後に引用符を使用する必要があります。

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


パラメータとして渡す変数の引用符をエスケープするため、 使用mysql_real_escape_string()が必要ですが、SQLクエリでは、文字列の周りに引用符を配置する必要があります。

于 2012-05-19T17:15:13.767 に答える
0

最初のクエリでは $mysteamid の値を単純な引用符で囲みましたが、2 番目のクエリではそうしませんでした。steamid が文字列型の場合、次のように値を引用符で囲む必要があります。

"UPDATE $tbl_name SET `cash` = $newcash WHERE `steamid` =' $mysteamid'"
于 2012-05-19T17:19:25.293 に答える